這是一個相當假設的問題,只是爲了理解正確的設計,但可以說我有兩個自定義的UIViews。正確的UIGestureRecognizer和委託設計
其中之一基本上是我會打電話給一個抽屜的容器。其目的是隱藏和顯示內容。這很像iOS上的通知中心,您可以通過滑動將其打開並彈回以關閉它。它是一個通用容器,可以包含任何其他UIView。它有一個UIPanGestureRecognizer來跟蹤拉開它的手指。它也可能有一個UISwipeGestureRecognizer來檢測「輕彈」。
另一種觀點是,具有UIPan /旋轉/捏GestureRecognizers定製地圖工具。
我認爲抽屜視圖應該是Pan/Swipe GestureRecognizers的UIGestureRecognizerDelegate,這樣它可以防止觸摸被傳遞,除非用戶抓住「手柄」。
我的第一個直覺是地圖是平移/旋轉/捏手勢的UIGestureRecognizerDelegate,以便它可以允許它們全部同時運行。
我遇到的問題是,我真的不希望地圖接收任何接觸或開始識別姿勢,直到抽屜是完全開放的。我希望能夠在抽屜本身自動執行此行爲,以便它可以立即適用於所有子視圖。
我能想到做到這一點的唯一方法是將所有的手勢處理程序連接到ViewController並讓它做所有事情,但是對於打破封裝的我來說,它必須知道地圖手勢需要運行同時,抽屜只能觸及它的手柄,並且地圖只有在打開時才能觸及。
什麼是這樣做,其中的邏輯可以留在地方意見,我認爲它屬於的一些方法?
我不能說這個解決方案不起作用,但它不在可用的手勢工具中。那是因爲Superviews沒有適當的方式來控制他們的Subviews手勢行爲(除了作爲代表)嗎? – cjserio 2015-02-25 12:23:09