使用UIPageViewController時(shí)進(jìn)行快速翻頁(yè),系統(tǒng)就會(huì)出現(xiàn)如下warning
2018-10-29 23:57:11.443910+0800 HistoricalLiterature[3117:832888] Unbalanced calls to begin/end appearance transitions for <ReaderViewController: 0x15de18a40>.
原因:上次動(dòng)畫(huà)還沒(méi)結(jié)束,然后又開(kāi)始了新的動(dòng)畫(huà)。 這樣就導(dǎo)致不能成功切換頁(yè)面,而是一個(gè)白色無(wú)內(nèi)容的頁(yè)面.(我的是出現(xiàn)上個(gè)頁(yè)面的內(nèi)容)
解決方案:動(dòng)畫(huà)執(zhí)行過(guò)程中,關(guān)閉翻頁(yè)控制器視圖的用戶交互;動(dòng)畫(huà)執(zhí)行完畢之后再次打開(kāi)。
/**
* @brief 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)即將開(kāi)始
*
* @param pageViewController 翻頁(yè)控制器
* @param pendingViewControllers 即將展示的控制器
*/
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
// 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)未執(zhí)行完,關(guān)閉用戶交互
pageViewController.view.userInteractionEnabled = NO;
}
/**
* @brief 該方法會(huì)在 UIPageViewController 翻頁(yè)效果出發(fā)之后,尚未完成時(shí)執(zhí)行
*
* @param pageViewController 翻頁(yè)控制器
* @param finished 動(dòng)畫(huà)完成
* @param previousViewControllers 前一個(gè)控制器(非當(dāng)前)
* @param completed 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)執(zhí)行完
*/
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
if (completed && finished) { //這里需要注意的是.如果用用戶翻頁(yè)未完成 又回來(lái)了將,不進(jìn)入判斷,這里看需求注釋
// 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)完成,開(kāi)啟用戶交互
pageViewController.view.userInteractionEnabled = YES;
}
}