有時候放在屏幕邊緣的Button會出現(xiàn)延遲響應(yīng)TouchDown事件的問題(表現(xiàn)為手指按下后有很明顯的一段時間延遲后才響應(yīng))。最典型的場景就是做類似微信的在屏幕底部一個按住說話的語音錄入按鈕。
出現(xiàn)該問題的原因是,在屏幕邊緣處,有一些系統(tǒng)手勢的存在,比如在屏幕底部有上拉劃出系統(tǒng)菜單的手勢。所以當(dāng)你按住Button,在響應(yīng)TouchDown事件前,系統(tǒng)會緩沖一段時間來判斷你是想上拉劃出系統(tǒng)菜單還是響應(yīng)TouchDown事件,所以就會有明顯的延遲感覺。
解決該問題的方法是,在呈現(xiàn)Button的Controller中添加以下方法。
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures {
return UIRectEdgeBottom;//該參數(shù)表示底部,根據(jù)需要修改
}
添加該方法后,在底部區(qū)域內(nèi)會優(yōu)先響應(yīng)我們自己的事件。(但是也會導(dǎo)致無法像其他地方一樣一次上劃手勢就上拉出系統(tǒng)菜單)