使用UIPageViewController时进行快速翻页,系统就会出现如下warning
2018-10-29 23:57:11.443910+0800 HistoricalLiterature[3117:832888] Unbalanced calls to begin/end appearance transitions for <ReaderViewController: 0x15de18a40>.
原因:上次动画还没结束,然后又开始了新的动画。 这样就导致不能成功切换页面,而是一个白色无内容的页面.(我的是出现上个页面的内容)
解决方案:动画执行过程中,关闭翻页控制器视图的用户交互;动画执行完毕之后再次打开。
/**
* @brief 转场动画即将开始
*
* @param pageViewController 翻页控制器
* @param pendingViewControllers 即将展示的控制器
*/
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
// 转场动画未执行完,关闭用户交互
pageViewController.view.userInteractionEnabled = NO;
}
/**
* @brief 该方法会在 UIPageViewController 翻页效果出发之后,尚未完成时执行
*
* @param pageViewController 翻页控制器
* @param finished 动画完成
* @param previousViewControllers 前一个控制器(非当前)
* @param completed 转场动画执行完
*/
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
if (completed && finished) { //这里需要注意的是.如果用用户翻页未完成 又回来了将,不进入判断,这里看需求注释
// 转场动画完成,开启用户交互
pageViewController.view.userInteractionEnabled = YES;
}
}
网友评论