iOS手势总结


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;
}

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值