测试用例很容易复制:下载Apple的
PhotoScroller示例应用程序,并尝试对其进行调整,以便平移(在缩放图像周围和每个图像之间)仅适用于两个手指.
将pagingScrollView和imageScrollView的panGestureRecognizer设置为仅接受min&最多2次触摸似乎是一个很好的起点,但它不起作用.它允许你用两根手指滚动图像就好*,但是分页然后不起作用.
我已经尝试了很多设置组合和自定义手势识别器,我有点难过.自定义滚动视图子类是否有用,或者我可以以某种方式操纵滚动视图委托方法使其工作?
*编辑:实际上,在这种情况下它不会滚动.只需轻轻一按,视图就不再顺畅滑动……
更新:我还在努力解决这个问题.我很感激来自使用过UIGestureRecognizers和UIScrollViews的人的一些意见.
编辑:
将ImageScrollView类设置为仅接受两个触摸:
- (id)initWithFrame:(CGRect)frame { // ... // Template code // ... [self.panGestureRecognizer setMinimumNumberOfTouches:2]; [self.panGestureRecognizer setMaximumNumberOfTouches:2]; }
将PhotoViewController的pagingScrollView设置为仅接受两个触摸:
- (void)loadView { // ... // Template code // ... [pagingScrollView.panGestureRecognizer setMinimumNumberOfTouches:2]; [pagingScrollView.panGestureRecognizer setMaximumNumberOfTouches:2]; }
这些修改直接在PhotoScroller示例应用程序之上进行.我希望这些简单的改变适用于双指互动,但副作用很奇怪(如上所述).
解决方法
子类似乎是这样的方式
该文档指出您可以通过子类化来操纵滚动手势的处理方式.
特别
Subclasses can override the
touchesShouldBegin:withEvent:inContentView:,pagingEnabled,and
touchesShouldCancelInContentView: methods (which are called by the
scroll view) to affect how the scroll view handles scrolling gestures.
您还应该看看这篇SO帖子,Scrolling with two fingers with a UIScrollView