在iOS6中处理手势识别器

前端之家收集整理的这篇文章主要介绍了在iOS6中处理手势识别器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
显然,iOS 6尝试自动处理这种情况,当您在同一个地方有一个手势识别器和一个UIButton,为相同的手势被激活.

当您想要单击按钮而不是激活手势识别器时,这种新的自动处理解决了问题,但是当您想要手势识别器行动时会产生新问题.

在iOS 5中可以实现:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

在冲突中将动作转移到UIButton.

这在iOS 6中似乎不起作用.此外,反转此方法的行为(因为现在UIButton具有优先级而不是手势识别器)将无法正常工作.

完成方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isKindOfClass:[UIControl class]]){
        return NO;
    }
    return YES;
}

解决方法

我已经做到这一点解决了这个问题,根据你的需要改变它:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
      [self MyCommonSelector];// this will work for ios 5
      return Yes;
 }

在您声明的按钮中添加目标,以便在iOS 6中调用

[self.myButton addTarget:self action:@selector(MyCommonSelector)
  forControlEvents:UIControlEventTouchUpInside];

用这种方式做你的东西,这个方法也可以通过按钮点击和你需要调用的手势来调用

-(void)MyCommonSelector
 {
    //Do your stuff here what you want to do with Gesture too.
 }

猜你在找的iOS相关文章