[iOS] UIButton 不響應或延遲響應 UIControlEventTouchDown 事件的解決辦法

       轉載註明出處:http://blog.csdn.net/zhaoyabei/article/details/42077097


      UIControlEventTouchDown即按鈕按下時應觸發的方法。實際使用過程中會出現延遲響應或間歇無響應,但是放開手指時會直接響應UIControlEventTouchDown、UIControlEventTouchUpInside兩個方法,這種情況下,按下按鈕不響應任何事件,當移動手指時會響應UIControlEventTouchDown。

1.延遲響應:

一般是因爲button放在了UIScrollVIew或UITableView上面,按下按鈕時系統會判斷是不是滑動手勢。將UIScrollVIew的delaysContentTouchescanCancelContentTouches兩個屬性都設置爲NO;

2.無響應:查到的資料,有人說“

    UIControlEventTouchDown事件是一旦手指碰到按鈕就調用了,這樣在iOS7上會產生一個衝突,由於iOS7加上了手勢滑動返回這麼一個動作,
    在手勢滑動返回時那個區域是不允許有UIControlEventTouchDown事件的,不然就會有事件衝突了,系統不知道是要準備返回還是要點擊那個Button,
    所以就加上了TouchDown事件的一個延遲響應。
    解決方案
  

  •     禁止所有滑動返回的手勢,讓TouchDown能夠正常響應 self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
  •     重寫UIButton,捕捉所有的手勢事件然後重寫”。

這個我測試無效果,可能是我的姿勢不對?我的按鈕是在iPad橫屏時靠右下角的位置,後來發現將按鈕上移一點就沒問題了(我上移了20個像素)。以上兩種情況均是iPad air測試通過,僅供參考。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章