2

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

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

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

4

3 回答 3

5

我相信那是iOS的“功能”。左侧和右侧的导航按钮小于 iOS 中允许的最小触摸区域。因此,实际点击区域比物理 NavigationButton 大得多。包括在栏的下方,就像您注意到按钮的左侧和右侧一样。它允许快速触摸而无需“查看”您触摸的位置。这是早期 iPhone 比大多数安卓手机更自然使用的关键原因之一。

于 2012-05-10T18:10:28.243 回答
0

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

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

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

于 2012-05-10T18:07:18.320 回答
0

我最初考虑将UIBarButtonItemand override子类化-touchInside:

但这不起作用,因为UIBarButtonItem它不是UIView.
因此,如果不覆盖某些私有 API,您想要实现的目标是不可能的。

于 2012-05-10T18:14:32.920 回答