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