問題出現
在項目實際過程中,經常需要在UITableView,UIScrollView等上添加手勢來取消鍵盤響應,但是UIScrollView的機制是接受觸摸事件,但是會讓手勢暫停一段時間time-off,會將手勢截留一段時間,使用一個定時器來監(jiān)聽自身坐標值是否有所改變,如果坐標值改變了,說明滑動了,那么就不會把tracking events 發(fā)送給子視圖;相反如果坐標值未發(fā)生改變,那么就會將tracking events發(fā)送給子視圖。
如果在視圖上添加了手勢,那么明顯就會有沖突,還好,蘋果有api幫助我們解決這些問題,實現這下面代理方法,可以解決觸控點擊事件和手勢的沖突,包括UITexFiled,UITableView等等控件單擊事件不響應問題。
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([touch.view isKindOfClass:[UITextField class]]){
return NO;
}
// 若為UITableViewCellContentView(即點擊了tableViewCell),則不截獲Touch事件
if ([NSStringFromClass([touch.view class])isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}