3

我正在开发一个在UIPageViewController. UIPageViewController's UIScrollView最初是禁用的。当您滑动单元格时,它会通过 a 缓慢地显示一个按钮UIPanGestureRecognizer,当按钮完全显示时,Swipeable Table Cell 会向UIPageViewController(其代表)发送一条消息以启用其滚动。

启用滚动后,我需要UIPageViewController在用户仍在滑动手指时开始滚动。此功能就像 Snapchat 一样,您可以向右滑动与朋友聊天。但即使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]];
    }
}

我的理解是,将滚动视图内容偏移设置为被触摸的当前位置应该会使滚动再次处于活动状态,但这所做的只是让我的整个屏幕变暗。

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

4

1 回答 1

0

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

于 2015-05-19T21:49:04.390 回答