我创建了这样的自定义导航按钮:
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"some.png"] forState:UIControlStateNormal];
....
[[current navigationItem] setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:button]];
其中current是UIViewController *类型。 一切正常,按钮创建,但它是按钮外的可点击区域,非常靠近导航栏的中间。是否可以限制可点击区域?
答案 0 :(得分:5)
我相信这是iOS的“功能”。左侧和右侧的导航按钮小于iOS中允许的最小触摸区域。因此,实际命中区域比物理NavigationButton大得多。包括在酒吧下面,就像你注意到按钮的左右两侧。它允许快速触摸,而无需“看”你触摸的地方。其中一个关键原因是iPhone在早期使用时比大多数Android手机更自然。
答案 1 :(得分:0)
我最好的猜测是按钮设置为使图像居中而不是缩放,因此按钮的框架太大了。
button.frame=CGRectMake(x,y,w,h)
将框架设置为您想要的可点击区域。
答案 2 :(得分:0)
我最初考虑过对UIBarButtonItem
进行子类化并覆盖-touchInside:
。
但这不起作用,因为UIBarButtonItem
不是UIView
的子类
因此,如果不重写某些私有API,您无法实现的目标。