轉載註明出處:http://blog.csdn.net/zhaoyabei/article/details/42077097
UIControlEventTouchDown即按鈕按下時應觸發的方法。實際使用過程中會出現延遲響應或間歇無響應,但是放開手指時會直接響應UIControlEventTouchDown、UIControlEventTouchUpInside兩個方法,這種情況下,按下按鈕不響應任何事件,當移動手指時會響應UIControlEventTouchDown。
1.延遲響應:
一般是因爲button放在了UIScrollVIew或UITableView上面,按下按鈕時系統會判斷是不是滑動手勢。將
UIScrollVIew的delaysContentTouches
、
canCancelContentTouches
兩個屬性都設置爲NO;
2.無響應:查到的資料,有人說“
UIControlEventTouchDown事件是一旦手指碰到按鈕就調用了,這樣在iOS7上會產生一個衝突,由於iOS7加上了手勢滑動返回這麼一個動作,
在手勢滑動返回時那個區域是不允許有UIControlEventTouchDown事件的,不然就會有事件衝突了,系統不知道是要準備返回還是要點擊那個Button,
所以就加上了TouchDown事件的一個延遲響應。
解決方案
禁止所有滑動返回的手勢,讓TouchDown能夠正常響應 self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
重寫UIButton,捕捉所有的手勢事件然後重寫
”。
這個我測試無效果,可能是我的姿勢不對?我的按鈕是在iPad橫屏時靠右下角的位置,後來發現將按鈕上移一點就沒問題了(我上移了20個像素)。以上兩種情況均是iPad air測試通過,僅供參考。