导航按钮点击外面

时间:2012-05-10 17:15:40

标签: objective-c uinavigationbar

我创建了这样的自定义导航按钮:

  UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
  [button setImage:[UIImage imageNamed:@"some.png"] forState:UIControlStateNormal];
  ....
  [[current navigationItem] setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:button]];

其中current是UIViewController *类型。 一切正常,按钮创建,但它是按钮外的可点击区域,非常靠近导航栏的中间。是否可以限制可点击区域?

3 个答案:

答案 0 :(得分:5)

我相信这是iOS的“功能”。左侧和右侧的导航按钮小于iOS中允许的最小触摸区域。因此,实际命中区域比物理NavigationButton大得多。包括在酒吧下面,就像你注意到按钮的左右两侧。它允许快速触摸,而无需“看”你触摸的地方。其中一个关键原因是iPhone在早期使用时比大多数Android手机更自然。

答案 1 :(得分:0)

我最好的猜测是按钮设置为使图像居中而不是缩放,因此按钮的框架太大了。

button.frame=CGRectMake(x,y,w,h)

将框架设置为您想要的可点击区域。

答案 2 :(得分:0)

我最初考虑过对UIBarButtonItem进行子类化并覆盖-touchInside:

但这不起作用,因为UIBarButtonItem不是UIView的子类 因此,如果不重写某些私有API,您无法实现的目标。