【问题标题】:Custom NavigationItem's TouchUpInside Event is outside boundaries自定义 NavigationItem 的 TouchUpInside 事件超出边界
【发布时间】:2013-08-10 15:38:40
【问题描述】:

我正在使用自定义 UIBarButtonItem 来替换 leftBarButtonItem,但是当我在按钮外部按下时,在按钮的大约 20 像素内,它会检测到它是被按下的按钮。

这是我的代码:

- (void)changeNavbarButtons
{
    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
    [backButton setBackgroundImage:[UIImage imageNamed:@"navbarBack.png"] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(popViewController) forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

    UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
                                       initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                       target:nil action:nil];
    negativeSpacer.width = -5;

    self.navigationItem.leftBarButtonItems = [NSArray
                                              arrayWithObjects:negativeSpacer, backItem, nil];    self.navigationItem.hidesBackButton = YES;
}

negativeSpacer 是将按钮向左移动 5 个像素。

这是什么原因造成的?

【问题讨论】:

  • 这不是错误,而是此按钮的默认行为。
  • 哦,我从来没有注意到这一点。谢谢香诺加

标签: iphone ios uinavigationbar touch-event


【解决方案1】:

这是UINavigationBarButton 项目的默认行为。 这是关于易用性。顶部的导航栏往往意味着人们点击的位置比您预期的要低。始终将那个间隙留在那里,或者有足够大的命中区域,以使用户将手指刺向“导航栏下方”项目的中间将避开死区。

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 1970-01-01
    • 2019-01-11
    • 2015-10-24
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2011-02-19
    相关资源
    最近更新 更多