长话短说,如果我的UINavigationBar的alpha
设置为0,我希望所有触摸转到底层视图(从视图控制器的角度来看,导航栏只是{{ 1}})。如果它是self.view
,我希望它能保留它们。
我将UINavigationBar子类化了,我试图覆盖1.0
,但我真的很困惑我正在做的事情,而且搜索一直没有什么帮助。
如何判断,“如果alpha为0,请将触摸发送到hitTest:withEvent:
,否则请保留导航栏”?
答案 0 :(得分:2)
您需要将视图的引用发送到导航栏,将其设置为名为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];
答案 1 :(得分:0)
Swift 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)
}
}