我正在一个项目中,该项目的UIPageViewController中有可滑动表格单元格。 UIPageViewController's UIScrollView最初被禁用。当您滑动单元格时,它会通过UIPanGestureRecognizer缓慢显示一个按钮,当按钮完全显示时,可滑动表单元格会向UIPageViewController(其委托)发送一条消息,以启用其滚动。

启用滚动后,我需要UIPageViewController开始滚动,同时用户仍需用手指滑动。此功能就像Snapchat一样,向右滑动即可与 friend 聊天。但是即使启用了UIScrollView,它也不会开始滚动。用户必须将手指从屏幕上移开,然后重新放回以再次滑动以开始滚动到下一个视图。 UIPageViewController具有以下代码来启用和禁用其滚动:

+(void)enableScrolling
{
    NSLog(@"supposed to enable");
    [myScrollView setScrollEnabled:YES];
    if (myScrollView.isScrollEnabled == YES) {
        NSLog(@"Scroll view is enabled");
    }
    //[myScrollView.panGestureRecognizer setState:(UIGestureRecognizerState *) UIGestureRecognizerStateBegan];
}

+(void)disableScrolling
{
    NSLog(@"supposed to disable");
    [myScrollView setScrollEnabled:NO];
    if (myScrollView.isScrollEnabled == NO) {
        NSLog(@"Scroll view is disabled");
    }
}

我想知道是否如果用户仍在进一步滑动,是否必须告诉UIPageViewController's UIPanGestureRecognizer开始滚动?我非常接近完成这项工作。任何意见,将不胜感激。谢谢。

编辑:

我已将以下代码行添加到页面视图控制器类的enableScrolling方法中:
[myScrollView setContentOffset:[myScrollView.panGestureRecognizer translationInView:myPageViewController.view]];

这是我更新的方法:
+(void)enableScrolling
{
    NSLog(@"supposed to enable");
    [myScrollView setScrollEnabled:YES];
    if (myScrollView.isScrollEnabled == YES) {
        NSLog(@"Scroll view is enabled");
        [myScrollView setContentOffset:[myScrollView.panGestureRecognizer translationInView:myPageViewController.view]];
    }
}

我的理解是,将滚动视图内容偏移设置为所触摸的当前位置应该会使滚动再次生效,但是所有这些操作都是使整个屏幕变暗。

关于我可能做错了什么的任何想法?

最佳答案

有趣的是您正在这样做。我有一个正在构建的应用程序模板,并且具有相同的功能,但是我决定将UIView放在tableViewCells上,然后使该视图响应触摸,将其向右滑动并查看下面的内容。当我到达某个contentOffSet点时,我激活了scrollView的enabled属性,并禁用了UIView上的触摸,从而允许我滚动到下一页(就像SnapChat一样)。不确定是否有帮助,但这就是我的做法!

关于ios - iOS-如何在UIPageViewController中设置UIScrollView以在重新启用后开始滚动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30138206/

10-11 22:35
查看更多