小编tre*_*rsm的帖子

嵌套的UIScrollViews同时滚动

我有两个嵌套的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)

这个解决方案大部分都有效,但是当我拖动视图时偶尔会出现故障,特别是当我用鼠标快速移动它或者将它拖过视图边界时.具体来说,其中一个滚动视图将暂时跳回到它开始的位置,好像该手势已被取消,但如果我继续滚动它会跳回.

我想知道的是,如果有一种更简单或更可靠的方法来实现这样的滚动,我忽略了,或者我是否可以采取任何措施来消除毛刺行为.

iphone uiscrollview uikit

6
推荐指数
1
解决办法
3575
查看次数

标签 统计

iphone ×1

uikit ×1

uiscrollview ×1