如何检测 UITapGestureRecognizer 的点击视图?
Posted
技术标签:
【中文标题】如何检测 UITapGestureRecognizer 的点击视图?【英文标题】:How to detect UITapGestureRecognizer 's clicked view? 【发布时间】:2014-06-10 09:41:51 【问题描述】:我正在使用:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard:)];
[self.view addGestureRecognizer:tap];
为了在从UITextField
中单击其他任何位置时关闭键盘。
但是,在我看来,我有 UITableView ,我必须检测何时单击 UITableView 的行。
因为UITapGestureRecognizer
我的didSelectRowAtIndexPath
函数没有被调用。有什么方法可以检测点击的对象是否是UITableViewCell?
【问题讨论】:
【参考方案1】:您可以从
获取 Gesture 事件- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
你检测到手势的触摸,所以逻辑上如下:
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
if ([touch.view isKindOfClass:[UITextFiled class]])
return FALSE;
else
// here is remove keyBoard code
return TRUE;
【讨论】:
如果上面的答案不能解决你的问题,试试这个***.com/questions/15814697/…【参考方案2】:实现这个委托方法gestureRecognizerShouldBegin:
,检查并取消发生在tableview单元格(行)上的手势回调并触发tableview的委托方法。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
if ([gestureRecognizer.view isKindOfClass:[UITableViewCell class]])
return NO;
return YES
【讨论】:
这将只显示主视图而不是子视图。实际上这是注册到手势的视图。以上是关于如何检测 UITapGestureRecognizer 的点击视图?的主要内容,如果未能解决你的问题,请参考以下文章