使用 UIPageViewController 進(jìn)行翻頁(yè)時(shí)出現(xiàn)的warning Unbalanced calls to begin/end appearance transitions for ...

使用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;
    }
}

參考 UIPageViewController

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容