我有透明的UIView
(我们称之为receiver
)分层在具有UIScrollView
(scrollView
)的UIScrollViewDelegate
(scrollViewDelegate
)上。
在某些情况下,receiver
需要消耗落在它上面的触摸事件。在其他情况下,我需要收集一些位置信息,然后将触摸事件原封不动地传递给scrollView
或欺骗事件,这些事件将包括拖动运动并导致适当的减速等。我该如何实现这一点?
编辑 - 迄今为止的研究:
我在scrollViewDelegate
's中放置了一个断点scrollViewWillBeginDragging
,它显示调用序列为:
(...various calls filtering down from UIApplicationMain...)
[UIWindow sendEvent:]
[UIWindow _sendGesturesForEvent:]
...
[UIGestureRecognizer _delayedUpdateGesture:]
[UIGestureRecognizer _updateGestureWithEvent]
_UIGestureRecognizerSendActions
[UIScrollView handlePan:]
[UIScrollView _updatePanGesture]
....
[UIScrollViewDelegate scrollViewWillBeginDragging:]
理想情况下,我希望能够UIScrollView handlePan:
使用适当的信息进行调用,但我找不到任何详细说明如何正确调用的信息handlePan
(我认为它必须是可能的,因为_UIGestureRecognizerSendActions
它是吗?)。
或者,我想我可以子类UIGestureRecognizer
化,但这似乎是一种相当笨拙的方式(我也不知道如何传达触摸事件的顺序)。