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