2010-08-30 65 views
3

我有一系列UIView子類作爲子視圖添加。每個子視圖都可以被拖放。當它們被丟棄(touchesEnded)時,我需要在viewController中運行一個方法來做一些工作。我目前在每個子視圖類中都有touchEvents。我是否應該在viewController中處理這些觸摸事件,還是應該將作爲每個我作爲子視圖添加的類的屬性的指針傳遞給父級viewController?處理Subview或ViewController中的觸摸事件邏輯

更新:或者這是NotificationCenter的工作嗎?

回答

4

UIViewController是UIResponder的子類,實例會自動插入到它們控制的視圖背後的響應者鏈中。因此,您可以在UIViewController的子類中實現與UIView的子類中相同的事件方法,並且它們將「正常工作」。也就是說,他們會自動調用。

因此,如果您的視圖控制器需要響應-touchesEnded:withEvent:,只需直接在您的UIViewController子類中實現該方法即可。如果視圖也需要對事件做出響應,您可以隨時從您的-touchesEnded:withEvent:(或其他)實施中發送消息。

1

您可以嘗試使用委託協議將所需的觸摸處理事件從uiview子類委派給uiviewcontroller。視圖控制器可以在它實例化或添加每個子視圖時將自己設置爲委託。

在MVC範例中,如果您想要處理特定於V視圖內部(按鈕外觀/位置)的觸摸,那麼您可能需要在V視圖中處理該觸摸,但是如果觸摸效果處於外部視圖(它在更大的窗口中的位置等),您可能想要將觸摸操作傳遞給C控制器以在M模型中設置狀態。