該篇文章摘自我的新浪博客,原文地址為: http://blog.sina.com.cn/s/blog_dcc636350102wavx.html
UITableView 擁有屬於自己的點擊事件,在將一個UITableView 的控件放在其它視圖上, 並且其它視圖需要添加手勢進行操作的情況下,我們會發現我們點擊UITableView的cell的時候, 並沒有出發方法:
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; 是直接進入到了手勢的方法中。 這是由於手勢的沖突引起的,解決方法是調用UIGestureRecognizer的大力方法:-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch *)touch;
在此方法中, 我們可以截獲所點擊的視圖,並決定是否手勢繼續向下響應:
我們可以根據UITableView的觸摸來判斷:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.viewclass])isEqual:@"UITableViewCellContentView"]){
returnNO;
}
returnYES;
}
也可以根據 添加手勢的View來判定:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if ([touch.view isKindOfClass:[UIScrollView class]]) {
returnYES;
}
returnNO;
}