240 发简信
IP属地:甘肃
  • 项目中也遇到这个问题了,我后来用PageViewController的viewControllers[0]来进行翻页,就没有这个问题了(http://www.jianshu.com/p/52a393691e77 在这个文章后面我写了具体的处理方法;
    pageViewControl中的后翻实现:
    UIViewController *pageView = [self.pdfDataSource getAfterPage:self.viewControllers[0]];
    if(pageView){
    [self setViewControllers:@[pageView]
    direction:UIPageViewControllerNavigationDirectionForward
    animated:isShowAnimated
    completion:^(BOOL finished){}];
    }

    UIPageViewController缺陷

    写在前面 本文整理了UIPageViewController在使用中的一些缺陷和bug,结合网上的一些资料提供一个相对全面的总结。文章及代码中如有任何形式的错误、疑问欢迎在留...

  • 居然没有代码格式。。我的思路主要是通过当前显示的view切换前一页和后一页;
    UIViewController *pageView = [self.pdfDataSource getAfterPage:self.viewControllers[0]]; //pageViewControllers的viewControllers属性中我经过测试,发现它只有一个viewControllers,而且它是当前显示的viewControllers,通过它就可以实现前翻和后翻了;

    不过这样实现后,还是有两个缺陷;
    1.Scroll显示样式时,setViewControllers的animer最好设置为false,否则偶尔还是会出现切换到空白页;

    2.性能问题;和楼主说的一样,因为pagaViewController的缓存机制,通过setViewControllers方法切换当前页,本来只需要一次就可以切换过去,内部缺自动触发了多次(2~3次),不过在高性能设备上问题不明显(6s上试的); (防真翻页时边缘翻页和自定义的手势存在冲突,边缘翻页时会自动触发两次viewControllerBeforeViewController或viewControllerAfterViewController事件;不过因为我用的viewControllers[0]]来设置当前的view,界面上没有显示错误的问题;

    UIPageViewController替换方案

    前文回顾 文接上一篇UIPageViewController缺陷。上篇中总结了UIPageViewController的几个不可接受缺陷:1.在Scroll style下UI...

  • 很专业,很详细,最近项目中也遇到这个问题,不过后来解决了,方法如下;
    - (void)fingerTap:(UITapGestureRecognizer *)sender
    {
    //经验证:self.viewControllers只有当前显示的viewControllers;
    //这里要是用滚动视图animated为True时会有BUG!!!
    BOOL isShowAnimated = self.transitionStyle == UIPageViewControllerTransitionStylePageCurl;

    CGPoint point = [sender locationInView:self.view];
    if(point.x > self.view.frame.size.width/3 && point.x < self.view.frame.size.width/3*2){
    if(self.showMenu){
    self.showMenu();
    }
    }else if(point.x < self.view.frame.size.width/3){//前翻
    UIViewController *pageView = [self.pdfDataSource getBeforePage:self.viewControllers[0]];
    if(pageView){
    [self setViewControllers:@[pageView]
    direction:UIPageViewControllerNavigationDirectionReverse
    animated:isShowAnimated
    completion:^(BOOL finished){}];
    }
    }else{//后翻
    UIViewController *pageView = [self.pdfDataSource getAfterPage:self.viewControllers[0]];
    if(pageView){
    [self setViewControllers:@[pageView]
    direction:UIPageViewControllerNavigationDirectionForward
    animated:isShowAnimated
    completion:^(BOOL finished){}];
    }
    }
    }


    #UIPageViewControllerDataSource回调中的处理

    - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    NSUInteger index = ((ReaderPageController *)curViewController).pageNO;
    if (index <= 1 || index == NSNotFound) {
    return nil;
    }
    index--;
    return [self viewControllerAtIndex:index];
    }

    UIPageViewController替换方案

    前文回顾 文接上一篇UIPageViewController缺陷。上篇中总结了UIPageViewController的几个不可接受缺陷:1.在Scroll style下UI...