禁用 UIButton 不起作用

Disabling UIButton not working

我在这里找到的解决方案使用旧的 .enabled,而不是 .isEnabled

所以我目前正在尝试在满足(或不满足)特定条件时禁用按钮的 functionality/clickability。因此,在此之前,如果不满足条件,我会全部禁用它们,然后如果在之后(动态地)满足条件,那么理论上应该启用。也就是说,当我从 .isEnabled = false 开始时,它最初并没有禁用按钮。

我知道条件得到满足,因为我有打印语句和其他测试(比如从 superview 中删除的标签,但 .isEnabled = false 按钮不起作用。有人遇到过上述问题或有任何解决方案吗?

代码如下:

override func viewDidLoad()
{
    super.viewDidLoad()
    trumpMoneyDefault.setValue(50, forKey: "TrumpMoney")
    print("UnoViewController")
    //make all the buttons that shouldn't be clickable unlcickable
    locklvl2.isEnabled = false
    locklvl3.isEnabled = false
    trumplvl2.isEnabled = false
    trumplvl3.isEnabled = false
    lvl2.isEnabled = false
    lvl3.isEnabled = false

    //make level2/3 unclickable by defeault
    //lvl2.isEnabled = false
    //lvl3.isEnabled = false
    //update trumpmoney label depending on if they have enough cash
    //also here check if they have already unlocked all via purchase of unlock all. If so, then skip all this
    if trumpMoneyDefault.value(forKey: "TrumpMoney") != nil
    {
        trumpmoney.text = trumpMoneyDefault.value(forKey: "TrumpMoney") as? String

        //remove locks if they got the money by default.
        let tempTrumpMoneyDefault = trumpMoneyDefault.value(forKey: "TrumpMoney") as! Int
        if tempTrumpMoneyDefault >=  100
        {
            locklvl2.removeFromSuperview()
            moneylvl2.removeFromSuperview()
            trumplvl2.removeFromSuperview()
            lvl2.isEnabled = true
            if tempTrumpMoneyDefault >=  500
            {
                locklvl3.removeFromSuperview()
                moneylvl3.removeFromSuperview()
                trumplvl3.removeFromSuperview()
                lvl3.isEnabled = true
            }
        }
    }
}

真的吗?它应该可以工作。

1.)这就是我禁用按钮的方式,它正在工作。

myButton.isEnabled = false;

2.)通过禁用用户交互来禁用按钮的绝望方法。

myButton.isUserInteractionEnabled = false; 

.enabled 是以前的 Swift 版本确定按钮是否被禁用的方法。

Swift 3

使用.isEnabled = true.isEnabled = false 取决于你想做什么。

这个问题很老了,但我找不到任何解决我的错误的方法,所以就在这里。对于使用 Storyboard 的任何人,请确保 UIButton 没有多个 @IBOutlet,并且它们之间没有交集。如果您懒惰并复制按钮,就会发生这种情况。

我对 UITextField 也有同样的问题,无论我做什么我都无法禁用它。

对我有用的解决方案是清理构建文件夹。

我正在使用 Xcode 10.1 和 Swift 4.2