我有透明的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化,但这似乎是一种相当笨拙的方式(我也不知道如何传达触摸事件的顺序)。