导航栏导航项导致推视视图控制器上按钮的顶部区域不可点击

Sco*_*ser 4 uinavigationbar uibutton uinavigationcontroller uinavigationitem ios

我有一种强烈的感觉,这可能是苹果只需修复的Xcode错误.我有一个视图控制器作为根控制器嵌入在导航控制器中.视图控制器有一个与顶部布局指南垂直对齐的按钮.视图控制器的按钮工作正常,所有可点击区域都正常工作.

在此输入图像描述

但是,如果我将相同或类似的视图控制器推到导航堆栈上,它的按钮将无法完全打开.按钮的顶部(大约10个像素左右)不再可以点击.如果我尝试点击按钮的左上角,则会轻触导航栏上的后退按钮,即使我显然没有点击导航栏边界.我认为这是苹果的一个错误,但我想知道是否有人知道修复.如果有人需要,这是github项目链接.

War*_*shi 5

这是iOS的默认行为.许多UIView人在iOS中拥有这种扩展的触控功能.例如UINavigationBar,UITabBar,UISecgmentedControl等我相信这是使easer触摸到这些控件.

如果您仍想覆盖此默认行为.您可以通过子类化UINavigationBar并在子类中添加此方法来完成此操作:

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    if ([self pointInside:point withEvent:event]) {
        self.userInteractionEnabled = YES;
    } else {
        self.userInteractionEnabled = NO;
    }

    return [super hitTest:point withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)

向您的Github项目发出合并请求.