2016-01-23 135 views
1

我正在嘗試使用UIBezierPath編寫程序並觸及方法。 我被兩個觸摸方法困惑:什麼時候iOS觸及方法(取消和結束)調用?

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event; 

當這些方法被稱爲我不明白,或者我怎麼可以給他們打電話。起初我以爲他們都是一樣的,直到我在某處看到他們不是。問題是:我怎樣才能調用這些方法之一,它們又有什麼不同?

回答

3

你不應該調用這些方法。他們被稱爲可可框架爲你。你只需要實現它們來爲你的子類UIResponser或你的自定義子類UIGestureRecognizer提供正確的(本地的)行爲。

請參考Apple's guide關於子類UIResponder關於如何實現這些方法的更多細節。

Apple's documentation- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法:

告訴當一個或多個手指從一個視圖或窗口所提出的應答。

Apple's documentation- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法:

發送到接收器時,系統事件(如低存儲器警告)取消的觸摸事件。

1

This document蘋果給你關於touchesCancelled事件回答:

如果響應者造成持久的對象,而處理事件,它應該實現touchesCancelled:withEvent:方法來處理這些對象的,如果系統取消序列。 當外部事件(例如傳入電話)中斷當前應用程序的事件處理時發生取消。請注意,響應者對象在收到多點觸控序列的最後一個touchesEnded:withEvent:消息時,也應處理任何持久對象。

當您在自定義對象的應用程序中實現自定義觸摸事件處理時,這些方法是必需的。 它允許您在用戶停止觸摸自定義對象或觸摸取消時清理資源。

相關問題