2013-02-11 87 views
2

我一直在研究各種方法來編寫應用程序的觸摸事件響應,我正在構建一個應用程序,而且我對我正在閱讀的內容有些困惑。UIResponder vs UIGestureRecognizer觸摸事件響應

據我所知,在iOS中有兩種普遍接受的觸摸響應方法:手勢識別和觸摸識別。

什麼時候適合使用其中一種?

具體什麼我建立*:

我正在寫一個控制器需要放置物品(UIImageViews的)在屏幕上用戶觸摸並四處移動,用戶拖動一個視圖。控制器正在與單獨的模型進行通信,所以我需要在觸摸事件期間精確控制何時向模型發送消息。

該模型需要知道用戶第一次觸摸屏幕的位置(多點觸控未啓用)以及用戶擡起屏幕的位置。我需要在用戶第一次觸摸時查詢模型,以確定用戶是否意味着要編輯圖像視圖的位置或創建一個新的視圖,並且我需要向用戶提示關閉屏幕的位置發送消息該模型可以更新。在拖動事件中,我還需要向模型發送常量查詢,以確定用戶在任何給定時刻懸停的位置是否有效。

起初我以爲我可以使用平移手勢識別器來完成工作,但當我進一步研究它時,我找不到一種方法來設置自定義函數調用的觸摸,拖動,和起飛事件(如果有辦法,很高興知道)。我發現了UIResponder方法,但仍然有待使用,還是最好在iOS6中使用手勢識別器?

*代碼不包括在內,因爲這個問題的範圍相當大,我不想分散不必要的細節。

回答

1

我來到這裏是因爲我正在研究UIGestureRecognizer與基於UIResponder的觸摸事件方法的效率,因爲我將它們用於低延遲應用程序。對於一般使用我可以確認,你可以重寫你的UIView子類,或者在UIGestureRecognizer子類的touchesBegan/Moved/Ended/Cancelled等的方法(這被添加到UIView),或者甚至在UIViewController子類(它是響應鏈像UIView的一部分)。

您也可以繼承泛GR等特定的UIGestureRecognizer,並覆蓋這些方法以利用其他功能,同時利用它們已檢測到的內容。一定要致電super(在上述所有情況下),您可能需要檢查或更新state屬性。

至於我的關於哪個更有效率的問題,我現在還不知道,但我可以想象它幾乎相當。