我想要实现的目标:http://youtu.be/SUWxVtpc0JA
我能取得的成就:http://youtu.be/b1xH6Xsvxcg
当我从文本页面更改为菜单时,我正在尝试使用Year Walk Companion应用程序执行的相同垂直视差滚动效果。
我已经能够在仅UIScrollViews
水平移动的UIPanGestureRecognizer
上执行此操作,方法是使用UIScrollView
向上和向下移动(想象在嵌套数组之间滑动)。但是当我有一个垂直滚动的UIScrollView
时,它会断开。
当我向下滚动UIPanGestureRecognizer
时,它会按照您的预期移动,如果向上移动则相同。但是,当我希望UIScrollView
进入并垂直移动UIScrollView
本身而不是它的内容时,问题就开始了。到目前为止,我已经将gestureRecognizerShouldBegin
子类化为对函数-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
UIPanGestureRecognizer* pan = (UIPanGestureRecognizer*)gestureRecognizer;
CGPoint panGestureTranslation = [pan translationInView:self];
if (self.contentOffset.y == 0 && panGestureTranslation.y > 0 ) {
return NO;
}
return YES;
}
进行测试:
NO
当我的UIScrollView
位于顶部时返回UIScrollView
,并允许我的其他UIPanGesture在页面之间滚动视差以重新开始。
我的问题是,当我的gestureRecognizerShouldBegin
滚动并到达顶部时,函数UIPanGestureRecognizer
将不会被调用并强制我在允许UIScrollView
视差滚动之前释放触摸。
问题:如何通过UIPanGestureRecognizer
停止触摸手柄,让{{1}}触摸屏上升而不会从屏幕上松开手指? (比如在Year Walk Companion应用程序中)。
答案 0 :(得分:0)
gestureRecognizerShouldBegin
,因为尚未启动新的触摸“会话”。现有的还在进行中,手势表示它不想开始。
您可以创建自己的手势子类,该子类可以保持可用,并且仅在内容偏移量<1时开始。 0.或者您可以使用滚动视图委托方法作为输入,而不是使用手势。