iOS手势总结

来源:互联网 发布:java高级培训 编辑:程序博客网 时间:2024/05/18 00:45


1.手势的分类

UITapGestureRecognizer :点击手势(根据设定单击次数可以分为单次点击和多次点击)

UIPinchGestureRecognizer:缩放或捏合手势

UIPanGestureRecognizer:平移或拖拽手势

UISwipeGestureRecognizer:轻扫手势

UIRotationGestureRecognizer:旋转手势

UILongPressGestureRecognizer:长按手势

2.手势的基本使用

(1)以单击手势为例,先初始化手势

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self 

action:@selector(tapGestureAction:)];

第一个参数是绑定手势触发时通知的对象,第二个参数是手势触发时执行的方法

(2)设置手势的属性

例如在第一步的基础上,将点击手势设置为双击手势

tapGesture.numberOfTapsRequired = 2;

(3)添加手势

[view addGestureRecognizer:tapGesture];

(4)编辑手势触发方法

tapGestureAction:里编辑你想要的操作

3.几个手势的具体使用

(1)轻扫手势的使用

- (void)showGestureForSwipeRecognizer:(UISwipeGestureRecognizer *)recognizer {
       // 得到点击的位置
       CGPoint location = [recognizer locationInView:self.view];
       // 判断手势的方向,根据方向移动位置
       if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
            location.x -= 220.0;
       } else {
            location.x += 220.0;
       }
       // 实现动画
       [UIView animateWithDuration:0.5 animations:^{
            self.imageView.alpha = 0.0;
            self.imageView.center = location;
       }];
}

(2)旋转手势的简单使用

- (void)showGestureForRotationRecognizer:(UIRotationGestureRecognizer *)recognizer {
       // 得到点击的位置
       CGPoint location = [recognizer locationInView:self.view];
       // 让图片跟着手势一起旋转
       CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]);
       self.imageView.transform = transform;
      // 实现取消手势的动画
      if (([recognizer state] == UIGestureRecognizerStateEnded) || ([recognizer state] == UIGestureRecognizerStateCancelled)) {
           [UIView animateWithDuration:0.5 animations:^{
                self.imageView.alpha = 0.0;
                self.imageView.transform = CGAffineTransformIdentity;
           }];
      }
}

4.手势冲突问题

(1)如果想要轻扫手势的识别优先于拖拽手势,可以使用下面这句话,这句话的意思是只有在识别轻扫手势失败时才会识别拖拽手势,如果识别轻扫手势成功就不会继续识· 别托转手势

[self.panRecognizer requireGestureRecognizerToFail:self.swipeRecognizer];

(2)如何禁止某个视图识别一个手势

- (void)viewDidLoad {
    [super viewDidLoad];
    // 首先设置手势的代理对象
    self.tapGestureRecognizer.delegate = self;
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // 判断是否点击在某个视图或者姿势图上
    if ([touch view] == self.customSubview){
    // 如果不想让这个视图成功识别这个手势和以返回NO
        return NO;
    }
    return YES;
}

















0 0
原创粉丝点击