2016-01-21 46 views
0

當用戶在我的應用中點擊並按住UIButton時,一段時間後會觸發UIControlEventTouchCancel事件。 UIControl的Apple文檔沒有關於此事件的任何詳細解釋。爲什麼觸發?它是幹什麼用的?什麼是UIControlEventTouchCancel?

[button addTarget:key action:@selector(keyUp:) forControlEvents:UIControlEventTouchUpInside]; 
[button addTarget:key action:@selector(keyUp:) forControlEvents:UIControlEventTouchUpOutside]; 
[button addTarget:key action:@selector(keyCancel:) forControlEvents:UIControlEventTouchCancel]; 
[button addTarget:key action:@selector(keyDown:) forControlEvents:UIControlEventTouchDown]; 

回答

1

According to the documentation,一個UIControlEventTouchCancel事件是由於:

一種系統事件取消所述控制的當前觸摸。

因此,這不是由於用戶輸入該觸摸已經結束,這是由於系統事件(諸如低存儲器警告,或者該應用程序移動到背景中)。我不知道你爲什麼能夠通過簡單地按住按鈕來觸發它。

我敢肯定,這與UIRespondertouchesCancelled:withEvent:事件類似(如果不是由該事件引起的)事件。關於這方面的文檔稍微更詳細:

當Cocoa Touch框架收到需要取消觸摸事件的系統中斷時調用此方法;爲此,它生成一個UITouchPhaseCancel階段的UITouch對象。中斷是可能導致應用程序不再處於活動狀態或將視圖從窗口中刪除的事情。

+0

內存不錯,應用程序沒有移到背景。我看到按鍵按鍵動作出現了一些異常現象,當我添加了觸摸取消事件時,它解釋了異常情況。但是,我無法弄清楚是什麼導致取消事件觸發。 – user3246173

+0

嗯......很奇怪。你在背景中做了什麼可能會影響按鈕的東西,比如動畫? – Hamish

+0

我想通了!我的代碼是在刷新顯示的另一種方法中從視圖中刪除按鈕。 – user3246173

0

一種情況是屏幕旋轉。如果在按住按鈕的同時旋轉屏幕,您將看到一個觸摸取消事件。

相關問題