导航栏外部区域在iOS中无法单击

时间:2013-08-16 08:35:24

标签: iphone ios uiimageview uinavigationbar uitapgesturerecognizer

我创建了自定义导航栏并在其上添加了一个UIButton。

请查看附件中的图片。

enter image description here

我将UIButton与背景图像添加为Custom NavigationBar的子视图,因此绿线上方的部分可点击,而不是绿线下方的部分。

我尝试过使用 UITapGestureRecognizer 以及触及方法ie。 touchesBegan 到UIImageView处理触摸,但没有运气。

我认为这只是因为我的UIButton nontouchable药水在NavigationBar Frame之外。

有没有办法点击子视图的部分,这部分是其父视图。

2 个答案:

答案 0 :(得分:1)

父视图大小小于子视图。这就是为什么它不可点击。我所知道的唯一选择是尝试增加父视图(自定义导航栏)的帧大小。

答案 1 :(得分:0)

哟需要子类导航栏并添加方法hitTest:withEvent:。例如:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {    
    CGRect extraTapRect = ...; // Put here needed rect
    if (CGRectContainsPoint(extraTapRect, point)) {
        for (UIView *subview in self.subviews.reverseObjectEnumerator) {
            CGPoint subviewPoint = [subview convertPoint:point fromView:self];
            UIView *result = [subview hitTest:subviewPoint withEvent:event];
            if (result != nil) {
                return result;
            }
        }
    }

    return [super hitTest:point withEvent:event];
}