我需要一个分页UIScrollView
,以UIScreenEdgePanGestureRecognizer
的方式检测屏幕边缘的平移,而不是检测像UIPanGestureRecognizer
这样的平移。
我可以从[scrollView panGestureRecogniser]
获取scrollView
个实例,但我无法将其替换为UIScreenEdgePanGestureRecognizer
的实例。
也无法将[[scrollView panGestureRecogniser] delegate]
更改为我控制下可能停止滚动手势的对象,除非它们从边缘开始,因为UIScrollView
不允许您更改它UIGestureReconiser
代表们。
答案 0 :(得分:6)
使用我已经熟悉的技术,实现这种效果比我预期的要容易。
如问题中所述,您可以使用[myScrollView panGestureRecogniser]
来访问滚动视图的平移手势识别器。虽然您无法更改此手势识别器的委托,但可以更改用于启动手势的视图 - 它不必是滚动视图实例本身。
[edgePanGestureHolder addGestureRecognizer: [scrollView panGestureRecognizer]];
edgePanGestureHolder
只是一个从边缘延伸到边缘的视图,并为滚动视图保存手势识别器。
在edgePanGestureHolder
之上放置另一个视图innerPanPrevention
。 innerPanPrevention
不应该一直延伸到屏幕边缘。
通过此设置,从边缘开始的平移将在edgePanGestureHolder
中找到滚动视图的手势识别器。从视图中间开始的潜在平移将在innerPanPrevention
中查找手势识别器,并且无法找到手势识别器,从而阻止滚动视图平移。
就我而言,我还将UIGestureRecogniser
添加到innerPanPrevention
。这些驱动其他滚动视图。从屏幕边缘开始的平移驱动一个滚动视图,从屏幕内部开始的平移驱动另一个。