我在这里找到的解决方案使用的是.enabled
,而不是.isEnabled
。
所以我正在尝试在某个条件满足(或不满足)的情况下禁用按钮的功能/可点击性。所以在它之前,如果条件不满足则禁用所有条件,然后如果在(动态)它满足之后,它理论上应该启用。话虽如此,当我从.isEnabled = false
开始时,它最初并没有禁用按钮。
我知道条件正在得到满足,因为我有打印声明和其他测试(比如标签被删除了fromuperview但.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
}
}
}
}
答案 0 :(得分:4)
真的?它应该工作。
1.)这是我禁用按钮的方式,它正在工作。
myButton.isEnabled = false;
2.)通过禁用用户交互来禁用按钮的绝望方式。
myButton.isUserInteractionEnabled = false;
答案 1 :(得分:3)
.enabled
是以前用于确定按钮是否被禁用的Swift版本方式。
Swift 3
使用.isEnabled = true
或.isEnabled = false
取决于你想做什么。
答案 2 :(得分:1)
这个问题很老,但是我找不到我的错误的任何解决方案,所以就在这里。对于使用Storyboard的任何人,请确保UIButton
没有多个@IBOutlet
并且它们之间没有交集。如果您懒惰并重复了按钮,则可能会发生这种情况。
答案 3 :(得分:0)
无论我做什么,我都无法禁用UITextField,这是同样的问题。
对我有用的解决方案是清理构建文件夹。
我正在使用Xcode 10.1和Swift 4.2