【问题标题】:UIPageViewController delay page change animationUIPageViewController 延迟换页动画
【发布时间】:2012-07-04 15:54:54
【问题描述】:

我正在开发一个使用 UIPageViewController 的应用程序。我注意到如果我太快地更改多个页面,它会在运行时导致几个问题。

有没有办法在两次页面更改之间设置延迟(例如 2 或 3 毫秒)? 提前致谢。

************ 详细答案**************

解决办法是这样的:

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{

    if(completed) {
        [pageViewController.view setUserInteractionEnabled:NO];
        [self performSelector:@selector(enableUserInteraction) withObject:nil afterDelay:0.2];
    }
}

-(void)enableUserInteraction{
    [self.view setUserInteractionEnabled:YES];
}

【问题讨论】:

  • 您已接受此答案。你找到你想把 userInteraction = NO 放在哪里了吗?
  • 我会修改问题添加答案:)
  • 非常感谢,但我已经用 Gabriel 的想法做了同样的事情

标签: iphone objective-c ios5 delay uipageviewcontroller


【解决方案1】:

在动画块中,设置 userInteraction = NO 直到动画结束。这意味着用户将无法与屏幕交互并因此更改页面,直到它完成动画。

【讨论】:

  • 没有动画块,因为动画代码隐藏在 UIPageViewController 类中。此外,当我尝试浏览页面时,我无法告诉控制器 userIntractionEnabled = NO,该操作将不会被接受..
【解决方案2】:

我把它放在 pageViewController:willTransitionToViewControllers: 中并使用了 dispatch_after。使用此解决方案,用户无法像在中那样快速滑动 2-3 次 pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:

- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
pageViewController.view.userInteractionEnabled = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    pageViewController.view.userInteractionEnabled = YES;

});

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多