我有一个手势识别器,我是用计算器制作的。它连接到用户双击时激活的动作。我将手势识别器连接到视图控制器的主视图,但手势识别器也应用于我的按钮。因此,如果用户快速键入11,他们将快速按两次1并意外激活他们不想要的功能。如何使UIGestureRecognizer不对按钮起作用?我想保持双击手势。我不想把它变成两指点击或类似的东西。但是,如果没有其他办法(我怀疑有),我可以做到。
答案 0 :(得分:0)
试试这个:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ((touch.view == yourButton)) {
return NO;
}
return YES;
}
每次识别手势时都会调用此手势,如果视图是您的按钮,则会忽略手势。
答案 1 :(得分:0)
您应该在ViewController.h中采用UIGestureRegconizerDelegate协议
@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
@end
在ViewController.m中,实现此方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UIControl class]]){
return NO;
}
return YES;
}
和yourGestureRecognizer.delegate = self //your view controller.
答案 2 :(得分:0)
根据安东尼奥的答案,你可以给你所有的tag
更容易。据推测,您的计算器只有一个yourButton
。假设您的所有按钮都有大于100的标签:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
if ((touch.view.tag > 100)) {
return NO;
}
return YES;
}
这比检查view
的类要干净得多。您现在可以拥有控件,无论如何都可以识别手势。