自定义 UIBarButtonItem 突出显示问题

Posted

技术标签:

【中文标题】自定义 UIBarButtonItem 突出显示问题【英文标题】:Custom UIBarButtonItem highlight issue 【发布时间】:2012-08-08 14:37:47 【问题描述】:

我有一个带有 5 个按钮的工具栏。

其中 4 个是常规栏按钮项,其中一个是自定义项(“UIBarButtonItem”中的“UIButton”)。

我注意到,当我在常规按钮(不完全在它们上)之间单击时,其中一个(最接近的)仍会收到单击事件并突出显示(这是我想要的)。

但自定义栏按钮项不显示此行为。

当我在它和常规按钮之一之间点击时,这两个按钮都没有收到触摸事件。这可能是因为UIButton 是获得点击事件的那个。有没有办法在包含栏按钮项目中添加触摸事件?或者也许是另一种解决这个问题的方法?

谢谢!

【问题讨论】:

您是否检查过是否有任何UITapGestureRecognizers 偷了触摸?它以前发生在我身上。如果是这种情况,您必须检查:***.com/questions/3344341/… 你是对的,对此感到抱歉:) 【参考方案1】:

button.userInteractionEnabled = YES;我相信就是答案。

【讨论】:

谢谢,但我真的不明白为什么这可以解决我的问题。它甚至与问题无关(也许我的问题不清楚).. 所有组件都是UIView 的子类。如果parentView.userInteractionEnabled = NO 则子视图将不会收到触摸消息。因此我的解决方案。顺便说一句,你试过了吗? 按钮交互已启用。问题是模仿在工具栏按钮之间单击的默认行为,但仍然可以点击其中一个【参考方案2】:

一种解决方案可能是您创建与栏按钮项目相同的图像并将 UIButton 指定为背景图像,这将解决您的问题。

希望对你有所帮助....

【讨论】:

是的,这是一种解决方法。我想过这样做,但我不认为我想添加额外的图像。但在我看来,你的建议是唯一的方法...... 我想我明白了!我只将触摸事件添加到 UIButton(在条形按钮项内)。也许我还应该将触摸事件(到 UIButton 引用的同一函数)添加到包含的 UIBarButtonItem。我会试一试,让你知道结果!【参考方案3】:

解决了! 我将另一个 UIView 添加到 UIBarButtonItem,然后将 UIButton 添加到 UIView。 我向 UIView 添加了一个触摸手势(并且还保留了 UIButton 的原始触摸事件),扩大了您可以触摸解决问题的按钮的区域。

【讨论】:

以上是关于自定义 UIBarButtonItem 突出显示问题的主要内容,如果未能解决你的问题,请参考以下文章

如果在工具栏中点击,UIBarButtonItem 不会突出显示?

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

对于 iPhone - 但不是 iOS 模拟器 - UIToolbar UIBarButtonItem 将仅在长按时突出显示,而不是在点击时突出显示

如何以编程方式将自定义图像设置为 UIBarButtonItem

uibarbuttonitem 高亮色调/颜色

工具栏自定义 UIBarButtonItem 位置和宽度