iOS on touch down 不及時調(diào)用的解決

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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容