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