【问题标题】:How to disable UIButton highlight on click?如何在点击时禁用 UIButton 突出显示?
【发布时间】:2013-07-05 21:20:33
【问题描述】:

如何在点击时禁用按钮高亮效果?具有白色背景颜色和深灰色文本颜色的自定义按钮。问题是按钮单击时文本变为白色。已经尝试过,但都没有奏效:

一个。是否在界面生成器中取消选中“突出显示的调整图像”。

b.尝试在按钮按下方法中设置突出显示 = NO:

((UIButton *)sender).highlighted = NO

c。尝试为高亮状态设置相同的标题:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

有什么建议吗?

【问题讨论】:

  • 你在使用故事板吗?
  • 当你说高亮效果时,你的意思是文字改变了颜色?
  • 您是否也在为您的按钮使用图像?

标签: ios objective-c uibutton


【解决方案1】:

UIButton 会在点击时突出显示,所以请检查按钮设置 将高亮状态配置中的标题颜色更改为与默认状态相同 或者你可以设置:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

如果要通过代码控制高亮,可以通过子类Button禁用普通高亮,在touchesBegin中禁用:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if (self.state == UIControlStateHighlighted) {
        [self setHighlighted:NO];
    }
}
【解决方案2】:

您还可以将 UIButton 类型设为:从 StoryBoard 自定义

这应该为您消除任何系统行为。 (我认为)

【讨论】:

  • 经过一番搜索,我找到了您的答案。添加了解决我的问题的一个重要方面:Type=System 行为将为突出显示的背景图像和文本添加淡入淡出效果。切换到 Type=Custom 将禁用此效果,以便准确显示指定的颜色。谢谢!
  • 使用图片时不会这样
  • 这就是答案
【解决方案3】:

我在网上找到的解决方案都不适合我(包括此处列出的这些),所以我最终在我的 custom UIButton 子类中这样做了:

// swift:

override var isHighlighted: Bool {
    didSet { if isHighlighted { isHighlighted = false } }
}

我也将buttonType 设置为.custom,但在这里可能没有区别。

现在:不再有奇怪的突出显示或彩色动画!

【讨论】:

    【解决方案4】:

    这是具有图像的按钮的解决方案。在情节提要中,有一个名为 HighlightedAdjustsImage 的属性默认为 On。禁用它,您的按钮图像将不会显示任何突出显示的属性。

    【讨论】:

      【解决方案5】:

      旧的过时答案和旧问题,但最新和最简单的方法是:

          overlayButton.adjustsImageWhenHighlighted = false
      

      【讨论】:

      • 这应该被标记为正确答案,效果很好。
      【解决方案6】:

      我的 2 美分 ;) Swift 3 准备好了

      class CustomButton: UIButton {
      
          override var isHighlighted: Bool {
              didSet {
                  if (isHighlighted) {
                      super.isHighlighted = false
                  }
              }
          }
      
      }
      

      形势与历史

      我为UIControlState.normalUIControlState.selected 设置了图像,所以设置UIButton.isSelected = true 显示选定的图像,否则显示正常图像。

      我们发现的问题是当UIButton.isSelected = true 时,以及在高亮/聚焦期间(通过点击按住按钮并通过滑动离开来放弃点击) 按钮显示UIControlState.normal 的图像,看起来很丑给我的老板:D

      我尝试了几种解决方案,例如UIButton(type: UIButtonType.custom)UIButton.adjustsImageWhenHighlighted = false,都没有帮助:(

      【讨论】:

        【解决方案7】:

        Swift 4 和 XCode 9

        只需取消选中“突出显示的调整图像”,如果您想删除禁用的背景,也请取消选中“禁用的调整图像”

        首先确保您的按钮类型是“自定义”

        【讨论】:

          【解决方案8】:

          您可以通过在 Swift 4.2 中创建扩展来做到这一点

          extension UIButton {
          open override var isHighlighted: Bool {
              didSet {
                  super.isHighlighted = false
              }
          }}
          

          【讨论】:

            猜你喜欢
            • 2017-05-20
            • 1970-01-01
            • 2019-11-30
            • 1970-01-01
            • 2014-03-10
            • 1970-01-01
            • 1970-01-01
            • 2011-06-08
            • 2011-02-23
            相关资源
            最近更新 更多