我想点击iOS后禁用按钮(UIButton
)。我是iOS的新手,但我认为目标上的等效代码是C:
button.enabled = NO;
但是我无法迅速做到这一点。
答案 0 :(得分:164)
答案 1 :(得分:33)
如果您希望按钮在没有“按下”外观的情况下保持静止:
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
记住:
1)您的IBOutlet
是 - > @IBOutlet weak var editButton: UIButton!
2)上面的代码进入viewWillAppear
答案 2 :(得分:9)
我这样做的方式如下:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction已连接到故事板中的按钮。
如果您将按钮设置为插座:
@IBOutlet weak var myButton: UIButton!
然后,您可以使用以下命令访问已启用的属性。按钮名称上的表示法:
myButton.enabled = false
答案 3 :(得分:5)
禁用Swift 3上的按钮:
yourButton.isEnabled = false
答案 4 :(得分:0)
可以通过代码
在Swift 4中禁用该按钮name
答案 5 :(得分:0)
您可以使用isEnabled
或isUserInteractionEnabled
属性启用/停用按钮。
两者之间的区别是:
isEnabled
是UIControl(超级UIButton)的属性,具有启用/禁用的视觉效果(即灰显)
isUserInteractionEnabled
是UIView(UIControl的超级类)的属性,虽然达到了目的但没有视觉效果
用法:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
答案 6 :(得分:0)
比方说,在Swift 4中,您为IBAction
设置了一个按钮,像@IBAction func nextLevel(_ sender: UIButton) {}
这样
并且您的应用中还有其他动作(例如计时器,gamePlay等)。您可能希望让用户选择在其他动作仍在发生时不崩溃应用时使用该segue,而不是禁用segue按钮。方法如下:
var appMode = 0
@IBAction func mySegue(_ sender: UIButton) {
if appMode == 1 { // avoid crash if button pressed during other app actions and/or conditions
let conflictingAction = sender as UIButton
conflictingAction.isEnabled = false
}
}
请注意,您可能会在if appMode == 0
和/或if appMode == 1
中遇到其他情况,并且这些情况不会与mySegue
按钮发生冲突。因此,避免崩溃。
答案 7 :(得分:0)
对于那些用Google搜索“禁用按钮”但可能会有更细微差别的用例的人:
以视觉效果禁用:如其他人所说,这将防止按下按钮,并且系统会自动使其看起来已禁用:
jquery.raty.js
在没有视觉效果的情况下禁用:您是否在按钮应该看起来正常但对触摸的反应不像按钮的情况下使用按钮?试试吧!
yourButton.isEnabled = false
隐藏而不禁用:此方法隐藏按钮而不禁用按钮(不可见,但仍然可以点按):
yourButton.userInteractionEnabled = false
删除::这将完全删除视图:
yourButton.alpha = 0.0
在按钮后面点击一些东西:堆叠了两个按钮,您想让顶部按钮暂时不显示吗?如果您不再需要顶部按钮,请将其删除。如果再次需要它,请尝试将其高度或宽度压缩为0!
答案 8 :(得分:0)
为了使它起作用:
yourButton.isEnabled = false
除了UI按钮之外,您还需要创建一个插座。
答案 9 :(得分:0)
如今,它是这样完成的。
Button(action: action) {
Text(buttonLabel)
}
.disabled(!isEnabled)