美文网首页UI
关于iOS的UIPageViewController的问题

关于iOS的UIPageViewController的问题

作者: 子_夜 | 来源:发表于2019-06-05 13:27 被阅读0次

首先是关闭UIPageViewControllerpageCurl模式下的点击翻页.

获取UIPagecontroller里的手势, 并设置代理.

        for gr in pageViewController.view?.gestureRecognizers ?? [] {
            if gr.isKind(of: UITapGestureRecognizer.self) {
                gr.delegate = self
            }
        }

添加手势代理

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        if gestureRecognizer.isKind(of: UITapGestureRecognizer.self) {
            return false
        }
        return true
    }

上面是可以取消pageCurl模式下的点击翻页

另外一个问题是UIPageViewController里是UITableView的问题.

就是上下滑动UITableView的时候, UIPageViewController会自动执行这个数据源方法.

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        if index <= 0 {
            return nil
        }
        return viewController
    }

没有任何动画效果,再往后翻页会出现空白页.

要解决这个问题可以把上面的手势代理设置改成下面这样, 也设置UIPanGestureRecognizer的代理.

        for gr in pageViewController.view?.gestureRecognizers ?? [] {
            gr.delegate = self
        }

但这样会导致另外一个问题, 就是在第一页和最后一页的时候再滑动, 如果数据源方法返回的控制器为nil, 就会崩溃
要解决这个问题需要执行手势的另外一个代理方法.

func gestureRecognizerShouldBegin(_ gestureeRcognizer: UIGestureRecognizer) -> Bool {
        //判断是否是 UIPanGestureRecognizer 手势
        if gestureeRcognizer.isKind(of: UIPanGestureRecognizer.self) {
            //获取手势滑动的偏移量
            let translation = (gestureeRcognizer as! UIPanGestureRecognizer).translation(in: pageViewController.view)

            if translation.x < 0 {
                //如果是最后一页, 向左滑动的时候就 
                return false
            } else {
                //如果是第一页, 向右滑动的时候就 
                return false
            }

            if translation.y < 0 {
                //向上滑动
            } else {
                //向下滑动
            }
  
        }
        return true
    }

这样就可以解决刚才的问题了.

相关文章

网友评论

    本文标题:关于iOS的UIPageViewController的问题

    本文链接:https://www.haomeiwen.com/subject/kuvjxctx.html