您的位置:首页 > 移动开发 > IOS开发

iOS调试——点击手势响应冲突处理办法

2017-03-01 09:40 661 查看
控件过滤:有些控件需要响应手势有些不需要

UITapGestureRecognizer  *tapGr = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboardAction)];

tapGr.delegate = self; //设置代理

[self.view addGestureRecognizer:tapGr];


代理方法中过滤:

#pragma mark tableView和手势冲突的解决方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([touch.view isKindOfClass:[UITextField class]]){
return NO;
}
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
// NSLog(NSStringFromClass([touch.view class]));
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}


collectionViewCell点击不需要响应手势,点击其他需要收键盘

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
//不获取事件
if (touch.view != self.collectionView){
return NO;
}
return YES;
}


- (void)hideKeyboardAction{
[self.view endEditing:YES];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: