转发到UIPageViewController

时间:2017-05-23 10:06:50

标签: ios swift uipageviewcontroller

我有一个容器视图,其中包含UIPageViewController的视图。这是在UIViewController内,占据了整个屏幕。在容器视图的顶部,我有一个UIView,覆盖了屏幕的一半,其中包含一个按钮和一些文本。我想将此UIView的触摸转发到UIPageViewController。这样即使用户正在UIPageViewController上滑动,仍然可以向左/向右滑动UIView。我还希望能够按下按钮,因此不能在UIView上将isUserInteractionEnabled设置为false。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

hitTest是决定谁应该使用触摸/手势的方法。

所以你的" UIView覆盖了屏幕的一半"可以像NoTouchHandlerView那样从子类化。然后这个视图不会消耗触摸。它将传递给它下面的视图。

class NoTouchHandlerView: UIView
{
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
    {
        if let hitTestView = super.hitTest(point, with: event), hitTestView !== self {
            return hitTestView
        }else {
            return nil
        }
    }
}

答案 1 :(得分:0)

针对像我这样的懒家伙的可接受答案的客观C版本:)

@implementation NoTouchHandlerView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView* hitTestView = [super hitTest:point withEvent:event];

    if (hitTestView != nil && hitTestView != self) {
        return hitTestView;
    }

    return nil;
}

@end