我创建了自定义导航栏并在其上添加了一个 UIButton。
请看一下附上的图片。

我将带有背景图像的 UIButton 作为子视图添加到自定义导航栏,因此绿线上方的部分是可点击的,而不是绿线下方的部分。
我尝试过使用UITapGestureRecognizer以及触摸方法,即。touchesBegan到 UIImageView 来处理触摸,但没有运气。
我认为这只是因为我的 UIButton 不可触摸药水在 NavigationBar 框架之外。
有什么方法可以单击其父视图之外的子视图部分。
我创建了自定义导航栏并在其上添加了一个 UIButton。
请看一下附上的图片。

我将带有背景图像的 UIButton 作为子视图添加到自定义导航栏,因此绿线上方的部分是可点击的,而不是绿线下方的部分。
我尝试过使用UITapGestureRecognizer以及触摸方法,即。touchesBegan到 UIImageView 来处理触摸,但没有运气。
我认为这只是因为我的 UIButton 不可触摸药水在 NavigationBar 框架之外。
有什么方法可以单击其父视图之外的子视图部分。
父视图大小小于子视图。这就是它不可点击的原因。据我所知,您唯一的选择是尝试增加父视图(自定义导航栏)框架大小。
你需要子类导航栏并添加方法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];
}