tre*_*rsm 6 iphone uiscrollview uikit
我有两个嵌套的UIScrollViews:父级仅限于水平分页,而子级仅限于垂直滚动.内容是一个可以自由拖动的大视图,但是可以捕捉到三个水平部分中的一个.嵌套滚动视图的默认行为是仅允许一次向一个方向滚动,但我希望允许同时向两个方向拖动以保持操纵单个大视图的感觉.
我目前的解决方案包括隔离垂直滚动视图的手势并将其委托设置为我的视图控制器:
for (UIGestureRecognizer *gesture in scrollView.gestureRecognizers)
if ([gesture isKindOfClass:[UIPanGestureRecognizer class]])
gesture.delegate = self;
Run Code Online (Sandbox Code Playgroud)
然后,我实现了委托方法,以允许分页视图的手势同时识别滚动视图的平移手势:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (gestureRecognizer.view == scrollView && otherGestureRecognizer.view == pageView)
return YES; // allow simultaneous scrolling of pageView and scrollView
return NO;
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案大部分都有效,但是当我拖动视图时偶尔会出现故障,特别是当我用鼠标快速移动它或者将它拖过视图边界时.具体来说,其中一个滚动视图将暂时跳回到它开始的位置,好像该手势已被取消,但如果我继续滚动它会跳回.
我想知道的是,如果有一种更简单或更可靠的方法来实现这样的滚动,我忽略了,或者我是否可以采取任何措施来消除毛刺行为.
当视图被拖出内容区域、释放,然后在滚动视图反弹回来之前再次点击/拖动时,就会发生故障行为。例如,当通过几次小滑动来滚动视图时,可能会发生这种情况。其中一个滚动视图会感到困惑,并在被拖动的同时尝试减速(弹跳),导致它在原点和拖动到的位置之间来回抖动。
我可以通过反转滚动视图的嵌套(垂直滚动视图内部的分页视图)并将委托添加到分页视图的 UIPanGestureRecognizer 而不是滚动视图的手势来解决此问题。现在,它可以自然滚动,就好像它是单个滚动视图一样,同时仍然符合仅在水平方向上的分页。我不认为滚动视图的目的是像这样被欺骗同时滚动,所以我不确定最初的故障行为是错误的结果,还是只是做一些意想不到的事情的结果。
归档时间: |
|
查看次数: |
3575 次 |
最近记录: |