UIPageViewController延迟页面更改动画

时间:2012-07-04 15:54:55

标签: iphone objective-c ios5 delay uipageviewcontroller

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

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

** * ** * ** * 的*** 详细答案 ** * ** * < / EM> ** * ** * **

解决方案是:

-(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];
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我把它放在 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;

});

}