如何检测 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 的点击视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 SD 卡何时插入?

如何在张量流对象检测中仅检测特定类别的对象

如何使用 TextRecognizer 检测单词?它只能检测 TextBlocks

如何快速入门深度学习目标检测?

如何计算 OpenCV 人脸检测器的检测分数?

业务系统弱口令如何检测