问题描述:UITableView 上添加了轻拍手势,手势时间里写了回收键盘,此时 UITableView 的 UITableViewCell 点击方法就和轻拍手势时间冲突,此时该怎么解决问题?
解决方法:
- 当前的 UIViewController 签协议 UIGestureRecognizerDelegate
- 写手势的代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"]){
return NO; // 当触碰到UITableView的UITableViewCell的UIContentView手势事件不响应
}
return YES;
}
问题追加:那如果 UITableView 上又嵌套一个 UICollectionView
怎么办,这个代理方法还有效吗?
解决方法:
这个代理方发还是有效的。
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"] || [NSStringFromClass([touch.view class])isEqual:@"UIView"]){
return NO; // 多加一个逻辑判断触碰到UIView时也让手势事件不响应
}
return YES;
}
这个代理方法是苹果官方提供的,大概也是考虑到开发者能遇到这样的小问题吧。