2

长话短说,如果alpha我的 UINavigationBar 设置为 0,我希望所有触摸都转到底层视图(从带有导航栏的视图控制器的角度来看,它只是self.view)。如果是1.0,我希望它保留它们。

我对 UINavigationBar 进行了子类化,并且我正在尝试覆盖hitTest:withEvent:,但我真的很困惑我在做什么,并且搜索几乎没有帮助。

我如何告诉它,“如果 alpha 为 0,则发送触摸到self.view,否则保持在导航栏上”?

4

2 回答 2

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];
于 2013-08-07T00:50:09.843 回答
0

斯威夫特 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)
    }

}
于 2018-09-21T11:50:53.527 回答