【问题标题】:How to detect UITapGestureRecognizer 's clicked view?如何检测 UITapGestureRecognizer 的点击视图?
【发布时间】: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?

【问题讨论】:

    标签: ios xcode5 uitableview uitapgesturerecognizer


    【解决方案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;
        }
    }
    

    【讨论】:

    【解决方案2】:

    实现这个委托方法gestureRecognizerShouldBegin:,检查并取消发生在tableview单元格(行)上的手势回调并触发tableview的委托方法。

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        if ([gestureRecognizer.view isKindOfClass:[UITableViewCell class]])
        {
            return NO;
        }
        return YES
    
    }
    

    【讨论】:

    • 这将只显示主视图而不是子视图。实际上这是注册到手势的视图。
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多