长话短说,如果alpha
我的 UINavigationBar 设置为 0,我希望所有触摸都转到底层视图(从带有导航栏的视图控制器的角度来看,它只是self.view
)。如果是1.0
,我希望它保留它们。
我对 UINavigationBar 进行了子类化,并且我正在尝试覆盖hitTest:withEvent:
,但我真的很困惑我在做什么,并且搜索几乎没有帮助。
我如何告诉它,“如果 alpha 为 0,则发送触摸到self.view
,否则保持在导航栏上”?
长话短说,如果alpha
我的 UINavigationBar 设置为 0,我希望所有触摸都转到底层视图(从带有导航栏的视图控制器的角度来看,它只是self.view
)。如果是1.0
,我希望它保留它们。
我对 UINavigationBar 进行了子类化,并且我正在尝试覆盖hitTest:withEvent:
,但我真的很困惑我在做什么,并且搜索几乎没有帮助。
我如何告诉它,“如果 alpha 为 0,则发送触摸到self.view
,否则保持在导航栏上”?
您需要将视图的引用发送到导航栏中,将其设置为称为属性behindView
或其他内容。
if(self.alpha == 0.0f)
{
return behindView;
}
return [super hitTest:point withEvent:event];
另一种方法是pointInside:withEvent:
像这样覆盖:
if(self.alpha == 0.0f)
{
return NO;
}
return [super pointInside:point withEvent:event];
斯威夫特 4版本。
代码:
class NavigationBar: UINavigationBar {
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
if self.alpha == 0 {
return false
}
return super.point(inside: point, with: event)
}
}