单击下方区域时,导航栏按钮单击事件触发。

时间:2013-03-11 14:42:46

标签: ios cocoa-touch

enter image description here

我有自定义视图的导航栏作为右侧栏按钮项。自定义视图中有两个按钮。但当我触摸右侧导航栏下方的区域时,它会触发按钮触摸事件。我通过改变背景颜色检查了按钮和视图的框架,所有设置都完美无缺。 我检查了默认的iOS应用程序,如时钟,日历,设置,备注等,它们都有相同的行为。在屏幕截图(默认的iOS日历应用程序。)中触摸红色矩形触发按钮触摸事件同样发生在我的应用程序中..

这是代码..

UIView* navigationButtonsView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 44.0f)];

UIButton *p = [UIButton buttonWithType:UIButtonTypeCustom];
[p setImage:[UIImage imageNamed:@"PBtn.png"] forState:UIControlStateNormal];
[p addTarget:self action:@selector(PButtonPushed:) forControlEvents:UIControlEventTouchUpInside];
[p setFrame:CGRectMake(43, 0, 57, 44)];
[navigationButtonsView addSubview:p];

UIButton *o = [UIButton buttonWithType:UIButtonTypeCustom];
[o addTarget:self action:@selector(oButtonPushed:) forControlEvents:UIControlEventTouchUpInside];
[o setFrame:CGRectMake(0, 0, 38, 44)];
[o setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal];
[navigationButtonsView addSubview:o];

UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:navigationButtonsView];
[musicVC.navigationItem setRightBarButtonItem: barItem animated:NO];

如何更改导航栏按钮的默认iOS行为?因为m在这些按钮下面有一些UI,而它的顶部区域没有因此而响应。 提前谢谢..

1 个答案:

答案 0 :(得分:1)

这是正常行为 - 有两个原因:

  1. iOS不知道你的手指有多大 - 所以它必须决定触摸的位置。在这种情况下,导航栏会覆盖表视图。

  2. 这可能与人机界面指南有关(抱歉,没有链接。谷歌它),说最小可触摸区域必须是44px。这种行为可能是'UIBarButtonItem'试图符合这些要求。