我有透明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