我有透明UIView
(我們就叫它receiver
)鋪在UIScrollView
(scrollView
),其具有UIScrollViewDelegate
(scrollViewDelegate
)。如何攔截觸摸事件,並轉發到指定的UIView
在某些情況下,receiver
需要消耗觸及它的觸摸事件。在其他情況下,我需要收集一些位置信息,然後將觸摸事件保持原樣傳遞到scrollView
,或者欺騙包含拖動的事件並導致適當的減速等。我如何實現這一點?
編輯 - 已有的研究結果:
我已經把scrollViewDelegate
中的斷點的scrollViewWillBeginDragging
,從而揭示了調用順序是:
(...various calls filtering down from UIApplicationMain...)
[UIWindow sendEvent:]
[UIWindow _sendGesturesForEvent:]
...
[UIGestureRecognizer _delayedUpdateGesture:]
[UIGestureRecognizer _updateGestureWithEvent]
_UIGestureRecognizerSendActions
[UIScrollView handlePan:]
[UIScrollView _updatePanGesture]
....
[UIScrollViewDelegate scrollViewWillBeginDragging:]
理想的情況下,我d喜歡能夠打電話到UIScrollView handlePan:
與適當的信息,但我找不到任何細節如何正確呼叫handlePan
(我認爲它必須是可能的,因爲_UIGestureRecognizerSendActions
是嗎?)。
另外我想我可以繼承UIGestureRecognizer
,但這似乎做的相當重手的方式(並再次我不知道如何溝通的觸摸事件序列)。
非常好,這看起來正是我所需要的 - 將它編碼並回復給您。乾杯:) – sjwarner 2012-08-06 14:34:21
是的,它的工作原理完全符合要求。謝謝您的幫助。 – sjwarner 2012-08-07 14:52:37