显然,当你有手势识别器和手势识别器时,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.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)