iOS6上UIPageViewController向前翻页的小Bug

表示有点儿无语了,以为是自己写的逻辑有问题,调了一个多小时,实际有点儿没有头绪了,于是google一下,发现竟然是iOS6本身的一个小Bug,苦逼的码农真心伤不起啊。
问题描述:iOS6使用UIPageViewController通过UIPageViewControllerNavigationDirectionReverse向回跳转翻页时,总会出现下一页不对的情况,因为下一页就是跳转以前的页面所以给你的感觉就是好像上一页被缓存成下一页了。这种情况大多发生在跳转的时候,使用了动画并且切换方式是UIPageViewControllerTransitionStyleScroll.
解决办法:

__block YourSelfClass *blocksafeSelf = self;    
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished){
            if(finished)
            {
                dispatch_async(dispatch_get_main_queue(), ^{
                    [blocksafeSelf.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];// bug fix for uipageview controller
                });
            }
        }];

另外为了避免这种情况发生,也可以:
1.不使用UIPageViewControllerTransitionStyleScroll方式
2.切换时animated:NO

参考资料:
UIPageViewController navigates to wrong page with Scroll transition style


相关博文

    分享到:

About rainbird

IOS攻城狮
This entry was posted in IOS开发 and tagged , , . Bookmark the permalink.

发表评论