Ios 如何为我的复选框停用UITapGestureRecognizer的功能?
我有一个UIView和一个UIApgestureRecognitor,在上面我使用文本字段和复选框。我想使用此手势识别器通过单击其他任何位置来删除键盘 但是你知道我的复选框会调用recongizer的选择器吗? 我怎样才能避免这种行为?我已经尝试过exclusiveTouch属性,但它不起作用Ios 如何为我的复选框停用UITapGestureRecognizer的功能?,ios,checkbox,uitapgesturerecognizer,Ios,Checkbox,Uitapgesturerecognizer,我有一个UIView和一个UIApgestureRecognitor,在上面我使用文本字段和复选框。我想使用此手势识别器通过单击其他任何位置来删除键盘 但是你知道我的复选框会调用recongizer的选择器吗? 我怎样才能避免这种行为?我已经尝试过exclusiveTouch属性,但它不起作用 有谁能为我推荐一个解决这个问题的好工作流程吗?你的复选框可能是一个自定义代码?按钮或其他类型的UIView,只要它们是UIView的子视图,并且没有自己的处理点击的方法(例如UITextField),它们
有谁能为我推荐一个解决这个问题的好工作流程吗?你的复选框可能是一个自定义代码?按钮或其他类型的UIView,只要它们是UIView的子视图,并且没有自己的处理点击的方法(例如UITextField),它们最终将调用SuperView识别器 所以你可以通过给每个复选框它自己的识别器来解决这个问题,然后让他们处理发生的任何事情,或者给所有复选框一个识别器。然后,这可以处理您的点击以选中或取消选中复选框 例如,沿着这条线的东西
- (void) viewDidLoad
{
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap):];
[singleTap setNumberOfTapsRequired:1];
[checkbox addGestureRecognizer:singleTap];
}
- (void) handleSingeTap: (id) sender
{
//check/uncheck the apropriate chexbox
}
1-注册为您的识别器代理
点击recognizer.delegate=self代码>(声明您是UIgestureRecognitizerDelegate)
2-机具应接收触摸
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
}
3-检查触摸。查看以确定手势是否应注意该触摸。在您的情况下,如果复选框视图为空,则返回NO
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[yourCheckboxClass class]]) {
return NO; // ignore the touch
}
return YES;
}
(您不必使用Is类,您可以使用任何其他方法来确定它是否是您的复选框)我找到了第三种更简单的方法
我使用了手势属性“cancelsTouchesinview”并将其设置为“NO”
是的,它们是自定义的代码,是的,它的工作,谢谢你。但是我没有提到我有两个复选框和一个按钮,它们被这个识别器感染了。如果我在每个按钮/复选框中添加一个自己的附加手势识别器,这不是一个非常漂亮的解决方案,不是吗?有更好的方法吗?您可以设置复选框和按钮的标记,然后在单处理程序函数中通过检查标记来检查它是哪个对象,并从此确定您的操作。此解决方案非常简单有效-谢谢:)顺便说一句。我的条件是:如果(touch.view==self.button)。。
gesture.cancelsTouchesinview = NO;