問題描述
在iOS7下開發,真機調試時,UIButton的其他事件響應都正常,但是UIControlEventTouchDown事件響應會延遲,而且不同響應區域發生的延時情況不同,有時延遲1s以后響應TouchDown事件,有時候一直按着不動就不響應事件,只有把手指輕輕滑動下才能正常響應TouchDown事件。
問題分析
UIControlEventTouchDown事件是一旦手指碰到按鈕就調用了,這樣在iOS7上會產生一個沖突,由於iOS7加上了手勢滑動返回這么一個動作,在手勢滑動返回時那個區域是不允許有UIControlEventTouchDown事件的,不然就會有事件沖突了,系統不知道是要准備返回還是要點擊那個Button,所以就加上了TouchDown事件的一個延遲響應。
解決方案
- 禁止所有滑動返回的手勢,讓TouchDown能夠正常響應
self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
- 重寫UIButton,捕捉所有的手勢事件然后重寫