iOS手势的实现方法

这篇文章主要为大家详细介绍了iOS手势的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS手势的具体实现代码,供大家参考,具体内容如下

效果

细节

1.UITouch

 #import "ViewController_0.h" @interface ViewController_0 () @property (nonatomic, strong)UILabel *label; @end @implementation ViewController_0 - (void)viewDidLoad { [super viewDidLoad]; self.label          = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; self.label.backgroundColor  = [UIColor yellowColor]; self.label.layer.borderWidth = 1; [self.view addSubview:self.label]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"拖动方块"; [textlabel sizeToFit]; textlabel.font   = [UIFont systemFontOfSize:12]; [self.view addSubview:textlabel]; } - (void)touchesBegan:(NSSet *)touches withEvent:(nullable UIEvent *)event { //1.拿到手势 UITouch *touch = [touches anyObject]; //2.拿到touch 所在view的坐标 CGPoint point = [touch locationInView:self.view]; //3.让label拿到坐标 self.label.center = point; NSLog(@"1.手指接触到了屏幕"); } - (void)touchesMoved:(NSSet *)touches withEvent:(nullable UIEvent *)event { //1.拿到手势 UITouch *touch = [touches anyObject]; //2.拿到touch 所在view的坐标 CGPoint point = [touch locationInView:self.view]; //3.让label拿到坐标 self.label.center = point; NSLog(@"2.手指在屏幕上移动"); } - (void)touchesEnded:(NSSet *)touches withEvent:(nullable UIEvent *)event { NSLog(@"3.手指刚离开屏幕"); } - (void)touchesCancelled:(NSSet *)touches withEvent:(nullable UIEvent *)event { NSLog(@"4.手势失效了"); } @end 

2.UITapGestureRecognizer

 #import "ViewController_1.h" @interface ViewController_1 () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_1 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"电脑上操作tap手势 alt +shift 需要连续点击次数2次"; [textlabel sizeToFit]; textlabel.font   = [UIFont systemFontOfSize:12]; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 100, 100)]; self.label.backgroundColor    = [UIColor orangeColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"0"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; // 1.创建tap手势 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)]; tap.numberOfTapsRequired  = 2; //需要轻轻点击的次数 tap.numberOfTouchesRequired = 2;//需要的手指数量 :2根手指alt +shift 需要匹配点击次数2次(其实直接用默认的就好) [self.label addGestureRecognizer:tap]; } - (void)labelTap:(UITapGestureRecognizer *)tap { int num = [self.label.text intValue]; num++; self.label.text = [NSString stringWithFormat:@"%d",num ]; } @end 

3.UILongPressGestureRecognizer

 #import "ViewController_2.h" @interface ViewController_2 ()  @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_2 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"long长按手势"; [textlabel sizeToFit]; textlabel.font   = [UIFont systemFontOfSize:12]; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(40, 150, 200, 150)]; self.label.backgroundColor    = [UIColor grayColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"0"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]; longPress.numberOfTapsRequired     = 1; longPress.numberOfTouchesRequired    = 1; longPress.minimumPressDuration     = 1.0; longPress.delegate  = self; [self.label addGestureRecognizer:longPress]; } - (void)longPressAction:(UILongPressGestureRecognizer *)longPress { if(longPress.state == UIGestureRecognizerStateBegan) { NSLog(@"手势状态开始"); } else if(longPress.state == UIGestureRecognizerStateEnded) { NSLog(@"手势状态结束"); } else if(longPress.state == UIGestureRecognizerStateChanged) { NSLog(@"手势状态改变"); NSInteger num = [self.label.text integerValue]; num ++; self.label.text = [NSString stringWithFormat:@"%ld",(long)num]; } } @end 

4.UISwipeGestureRecognizer

 #import "ViewController_3.h" @interface ViewController_3 () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_3 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel   = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text     = @"swipe手势 向右滑动➕1,你也可以设置左划上划下划"; textlabel.numberOfLines = 0; textlabel.font     = [UIFont systemFontOfSize:12]; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 150, 100, 100)]; self.label.backgroundColor    = [UIColor grayColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"0"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)]; swipeGesture.direction         = UISwipeGestureRecognizerDirectionRight;//默认就是向右划 [self.label addGestureRecognizer:swipeGesture]; } -(void)swipeAction:(UISwipeGestureRecognizer *)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { NSLog(@"现在响应左划手势"); } else if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { NSLog(@"现在响应右划手势"); NSInteger num  = [self.label.text integerValue]; num ++; self.label.text = [NSString stringWithFormat:@"%ld",(long)num]; } else if (swipe.direction == UISwipeGestureRecognizerDirectionUp) { NSLog(@"现在响应上划手势"); } else if (swipe.direction == UISwipeGestureRecognizerDirectionDown) { NSLog(@"现在响应下划手势"); } } @end 

 5.UIPanGestureRecognizer

 #import "ViewController_4.h" @interface ViewController_4 () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_4 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"pan手势,拖动方块"; [textlabel sizeToFit]; textlabel.font   = [UIFont systemFontOfSize:12]; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; self.label.backgroundColor    = [UIColor grayColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"0"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)]; [self.label addGestureRecognizer:pan]; } - (void)panAction:(UIPanGestureRecognizer *)pan { CGPoint offset  = [pan locationInView:self.view]; self.label.center = offset; } @end 

6.UIRotationGestureRecognizer

 #import "ViewController_5.h" @interface ViewController_5 () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_5 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"模拟器测试旋转手势时,按住 option键,再用触摸板或鼠标操作"; textlabel.font   = [UIFont systemFontOfSize:12]; textlabel.numberOfLines = 0; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(40, 200, 200, 50)]; self.label.backgroundColor    = [UIColor grayColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"we are friends"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; //(模拟器测试捏合和旋转手势时,按住 option 键,再用触摸板或鼠标操作) UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)]; [self.view addGestureRecognizer:rotation]; } - (void)rotationAction:(UIRotationGestureRecognizer *)rotation { self.label.transform = CGAffineTransformRotate(self.label.transform, rotation.rotation); rotation.rotation = 0; // 这个很重要!!!!! //  static float orginState; // //  self.label.transform = CGAffineTransformMakeRotation(rotation.rotation + orginState); // //  if (rotation.state == UIGestureRecognizerStateEnded) { // //    orginState = orginState + rotation.state; //    self.label.transform = CGAffineTransformMakeRotation(rotation.rotation); //  } } @end 

7.UIPinchGestureRecognizer

 #import "ViewController_6.h" @interface ViewController_6 () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController_6 - (void)viewDidLoad { [super viewDidLoad]; UILabel *textlabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 200, 45)]; textlabel.text   = @"模拟器测试捏合手势时,按住 option键,再用触摸板或鼠标操作"; textlabel.font   = [UIFont systemFontOfSize:12]; textlabel.numberOfLines = 0; [self.view addSubview:textlabel]; self.label            = [[UILabel alloc] initWithFrame:CGRectMake(100, 250, 80, 80)]; self.label.backgroundColor    = [UIColor grayColor]; self.label.userInteractionEnabled = YES; self.label.text          = @"0"; self.label.textAlignment     = NSTextAlignmentCenter; [self.view addSubview:self.label]; //  (模拟器测试捏合和旋转手势时,按住 option 键,再用触摸板或鼠标操作) UIPinchGestureRecognizer * pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pichGesture:)]; [self.view addGestureRecognizer:pinch]; } - (void)pichGesture:(UIPinchGestureRecognizer *)pinch { static float originScale = 1; //手势缩放返回的scale 是相对于上一次的 self.label.transform = CGAffineTransformMakeScale(pinch.scale * originScale , pinch.scale*originScale); if (pinch.state == UIGestureRecognizerStateEnded) { originScale = originScale * pinch.scale; } } @end 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持html中文网。

以上就是iOS手势的实现方法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动