2014-06-10 51 views
1

我使用:如何检测UITapGestureRecognizer的点击视图?

​​

为了从UITextField点击其他地方时关闭键盘。

但在我看来,我有UITableView,我必须检测点击UITableView的行时。 由于UITapGestureRecognizer我的didSelectRowAtIndexPath函数没有被调用。有什么办法来检测点击的对象是否是UITableViewCell?

回答

5

您可以从

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

您检测手势的触摸得到手势的thouch事件,这样做的逻辑像波纹管:

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[UITextFiled class]]) 
    { 
     return FALSE; 
    } 
    else 
    { 

    // here is remove keyBoard code 
     return TRUE; 
    } 
} 
+0

如果以上答案不能解决你的问题,试试这个http://stackoverflow.com/questions/15814697/uitapgesturerecognizer-tap-on-self-view-but-ignore-subviews –

0

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

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

} 
+0

这只显示主视图,但不显示子视图。实际上这是注册到该姿势的视图。 – marcelosalloum