4

我正在开发一个使用 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];
}
4

2 回答 2

3

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

于 2012-07-04T18:17:41.427 回答
0

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

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

});

}
于 2016-01-15T11:22:53.377 回答