对于 UIScrollview,我如何使用自己的 panGestureRecognizer 但允许 scrollView 使用其识别器进行反弹?
Posted
技术标签:
【中文标题】对于 UIScrollview,我如何使用自己的 panGestureRecognizer 但允许 scrollView 使用其识别器进行反弹?【英文标题】:For UIScrollview, how can I use my own panGestureRecognizer but allow the scrollView to use its recognizers for bounces? 【发布时间】:2012-12-13 03:32:56 【问题描述】:我想在 contentSize 内实现我自己的平移滚动,但允许 scrollView 处理 contentSize 之外的反弹。我似乎无法让它工作。
我尝试过 requiresGestureRecognizerToFail:,将它设置在所有 scrollView 的识别器和我的 pan 之一之间。
我还尝试在我的平移识别器上实现三个委托方法,当 contentOffset 超出 contentSize 时返回 YES。
欢迎任何提示或建议!即使您不知道解决方案,但有一个可行的想法,请发布!谢谢。
【问题讨论】:
【参考方案1】:实现UIGestureRecognizerDelegate
用这个方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
并在内部进行条件检查,禁用滚动视图,并让手势控制...类似于(完全组成数字):
if (self.scrollView.contentSize > 100)
self.scrollView.scrollEnabled = NO;
[self performSelector:@selector(reenableScrollView) afterDelay:0.3f];
return YES;
else
return NO;
然后重新启用滚动视图
- (void)reenableScrollView
self.scrollView.enabled = YES;
【讨论】:
仅靠自己?当我这样做时,滚动视图识别器似乎覆盖了我的,即使我返回 no 你确定方法被调用了吗? ..你放了一个断点,或者一个 NSLog 在那里,它被击中了? 滚动视图识别器有优先权吗? 我的平移识别器现在没有被调用。我可以稍后制作一个迷你项目来展示我在做什么。似乎应该接收触摸的手势识别器是我自己的......我正在阻止我自己的识别器!委托在我的平移识别器上设置,滚动视图无法更改以上是关于对于 UIScrollview,我如何使用自己的 panGestureRecognizer 但允许 scrollView 使用其识别器进行反弹?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我自己的自定义视图中重现 iPhone UIScrollView 的轻弹滚动行为?