iOS中添加UITapGestureRecognizer手势识别后,UITableView的didSelectRowAtIndexPath失效

来源:互联网 发布:逛淘宝网 编辑:程序博客网 时间:2024/06/01 10:36

参考:http://blog.csdn.net/iosevanhuang/article/details/8830499



点击底部空白区域隐藏键盘

1.先给tableView注册手势。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];    tap.delegate = self;    [self.tableView addGestureRecognizer:tap];

2.修改代理方法。

UITapGestureRecognizer截获了touch事件,导致didSelectRowAtIndexPath方法无法响应。

添加协议<UIGestureRecognizerDelegate>

重写- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"] ||        [NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewLabel"] )                // Don't let selections of auto-complete entries fire the        // gesture recognizer        return NO;    }        return YES;}

3.添加点击调用方法,隐藏键盘

- (void)tap:(UIGestureRecognizer *)gestureRecognizer{    [self.searchBar resignFirstResponder];}


修改方法二

重载UIViewController中的touchesBegin方法,然后在里面执行[self.view endEditing:YES];,这样单击UIViewController的任意地方,就可以收起键盘。

0 0