自定义 UIBarButtonItem 突出显示问题
Posted
技术标签:
【中文标题】自定义 UIBarButtonItem 突出显示问题【英文标题】:Custom UIBarButtonItem highlight issue 【发布时间】:2012-08-08 14:37:47 【问题描述】:我有一个带有 5 个按钮的工具栏。
其中 4 个是常规栏按钮项,其中一个是自定义项(“UIBarButtonItem”中的“UIButton”)。
我注意到,当我在常规按钮(不完全在它们上)之间单击时,其中一个(最接近的)仍会收到单击事件并突出显示(这是我想要的)。
但自定义栏按钮项不显示此行为。
当我在它和常规按钮之一之间点击时,这两个按钮都没有收到触摸事件。这可能是因为UIButton
是获得点击事件的那个。有没有办法在包含栏按钮项目中添加触摸事件?或者也许是另一种解决这个问题的方法?
谢谢!
【问题讨论】:
您是否检查过是否有任何UITapGestureRecognizer
s 偷了触摸?它以前发生在我身上。如果是这种情况,您必须检查:***.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 将仅在长按时突出显示,而不是在点击时突出显示