iOS開發 解決UITapGestureRecognizer手勢與UITableView的點擊事件的衝突

 

該篇文章摘自個人新浪博客,原文地址爲: http://blog.sina.com.cn/s/blog_dcc636350102wavx.htmlhtml

 

UITableView 擁有屬於本身的點擊事件,在將一個UITableView 的控件放在其它視圖上, 而且其它視圖須要添加手勢進行操做的狀況下,咱們會發現咱們點擊UITableView的cell的時候, 並無出發方法:ios

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; 是直接進入到了手勢的方法中。 這是因爲手勢的衝突引發的,解決方法是調用UIGestureRecognizer的大力方法:-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch *)touch;spa

 

 

在此方法中, 咱們能夠截獲所點擊的視圖,並決定是否手勢繼續向下響應:htm

咱們能夠根據UITableView的觸摸來判斷:blog

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {事件

  if([NSStringFromClass([touch.viewclass])isEqual:@"UITableViewCellContentView"]){開發

      returnNO;get

   }博客

   returnYES;it

 

}

 

也能夠根據 添加手勢的View來斷定:

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

      if ([touch.view isKindOfClass:[UIScrollView class]]) {

         returnYES;

     }

   returnNO;

 

}

相關文章
相關標籤/搜索