ios 如何禁用UIButton高亮点击?

xghobddn  于 8个月前  发布在  iOS
关注(0)|答案(9)|浏览(141)

如何禁用按钮突出显示效果点击?有自定义按钮与白色bg颜色和深灰色文本颜色.问题是文本成为按钮点击白色.已经尝试过,但没有一个工作:
a.在界面生成器中取消选中“突出显示的调整图像”。
B.在按下按钮的方法中,尝试突出显示设置=否:

((UIButton *)sender).highlighted = NO

字符串
c.尝试为高亮状态设置相同的标题:

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


有什么建议吗?

ghg1uchk

ghg1uchk1#

您也可以从StoryBoard中定制UIButton类型:


的数据
这应该可以为您剥离任何系统行为。(我认为)

xoshrz7s

xoshrz7s2#

这是一个有图像的按钮的解决方案。在故事板中,有一个名为HighlightedAdjustsImage的属性,默认情况下为On。禁用该属性,按钮图像将不会显示任何突出显示的属性。

dtcbnfnu

dtcbnfnu3#

Swift 4和XCode 9

只需取消选中**“突出显示的调整图像”,如果您想删除禁用的背景取消选中“禁用的调整图像”太。
首先确保您的按钮类型为
“自定义”**


的数据

qoefvg9y

qoefvg9y4#

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

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

字符串
如果你想通过代码控制Highlighted,你可以通过子类Button禁用普通高亮,并在touchesBegin中禁用:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if (self.state == UIControlStateHighlighted) {
        [self setHighlighted:NO];
    }
}

rm5edbpk

rm5edbpk5#

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

overlayButton.adjustsImageWhenHighlighted = false

字符串

o0lyfsai

o0lyfsai6#

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

// swift:

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

字符串
我还将buttonType设置为.custom,但在这里可能没有区别。
现在:没有更多奇怪的突出显示或彩色动画!

fnvucqvd

fnvucqvd7#

My 2 cents ;)Swift 3 ready

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,没有帮助:(

i7uq4tfw

i7uq4tfw8#

您可以在Swift 4.2中创建扩展名

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

字符串

jobtbby3

jobtbby39#

我在tableview中遇到了这个问题,解决这个问题的方法是在cellForRowAt indexPath中添加以下内容:
对于Swift 3及以上版本:

cell.selectionStyle = .none

字符串
现在,当我点击单元格时,我的单元格上不再有灰色覆盖。

相关问题