1

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

请看一下附上的图片。

在此处输入图像描述

我将带有背景图像的 UIButton 作为子视图添加到自定义导航栏,因此绿线上方的部分是可点击的,而不是绿线下方的部分。

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

我认为这只是因为我的 UIButton 不可触摸药水在 NavigationBar 框架之外。

有什么方法可以单击其父视图之外的子视图部分。

4

2 回答 2

1

父视图大小小于子视图。这就是它不可点击的原因。据我所知,您唯一的选择是尝试增加父视图(自定义导航栏)框架大小。

于 2013-08-16T08:37:54.010 回答
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];
}
于 2015-10-14T04:59:17.937 回答