1. 背景
今天自定義了一個view , 并截取了touchesBegan 事件,5s 里邊可以正常觸發(fā)此事件,但是6plus 里邊 touchesBegan 和 touchesEnd 幾乎同時調(diào)用,讓我中間的動畫做不成,如圖

點擊觸發(fā)的時間不對.gif
藍(lán)色的view,點擊右邊一切都正常,點擊左邊就不正常,兩個時間被同時調(diào)用了
2. 原因
當(dāng) 點擊藍(lán)色view 的左側(cè)時, 系統(tǒng)不知道用戶點擊是為了滑動navigation ,還是為了響應(yīng)藍(lán)色的view, 所以系統(tǒng)會等待用戶的下一步動作,所以當(dāng)用戶沒有滑動,而只是簡單地點擊事件時,再出發(fā)。所以觸發(fā)開始時間和點擊開始時間幾乎是同時的。默認(rèn)情況下,系統(tǒng)的navigation 用戶只有在屏幕最左側(cè)滑動時才會有響應(yīng),所以當(dāng)藍(lán)色view 的右邊被點擊時系統(tǒng)馬上就知道點要觸發(fā)哪一個了。所以一切正常,兩個時間不會同時調(diào)用。
3.解決方法
告訴系統(tǒng)不要等待判斷。
-(void)viewDidLoad{
[super viewDidLoad];
self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan = NO;
}

點擊事件正常.gif
4.補充
有些時候可能不只有navigation 干擾點擊時間,也許會是scrollview ,collectionview ,或者 tableview. 此時解決方法一樣,如下:
table.delaysContentTouches = NO;
table.canCancelContentTouches = NO;