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


 

該篇文章摘自我的新浪博客,原文地址為: 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;

 

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM