UIButton
单击后,我想在iOS上禁用按钮()。我是开发iOS的新手,但是我认为等效的C代码是这样的:
button.enabled = NO;
但是我不能迅速做到这一点。
Answers:
如果您希望按钮保持静态而不出现“被按下”的外观:
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
记得:
1)你IBOutlet
是->@IBOutlet weak var editButton: UIButton!
2)上面的代码进入 viewWillAppear
我这样做的方式如下:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction已连接到情节提要中的按钮。
如果您将按钮设置为插座:
@IBOutlet weak var myButton: UIButton!
然后,您可以使用来访问已启用的属性。按钮名称的符号:
myButton.enabled = false
对于那些使用Google“禁用按钮”但可能会有更细微差别的用例的用户:
禁用并具有视觉效果:正如其他人所说,这将防止按下按钮,并且系统会自动使其看起来已禁用:
yourButton.isEnabled = false
在没有视觉效果的情况下禁用:您是否在按钮应该看起来正常但对触摸的反应不像按钮的情况下使用按钮?试试这个!
yourButton.userInteractionEnabled = false
隐藏而不禁用:此方法隐藏按钮而不禁用按钮(不可见,但仍可以点击):
yourButton.alpha = 0.0
删除:这将完全删除视图:
yourButton.removeFromSuperView()
点按按钮后面的内容:是否有两个按钮堆叠在一起,您想让顶部按钮暂时不显示?如果您不再需要顶部按钮,请将其删除。如果您再次需要它,请尝试将其高度或宽度压缩为0!
您可以使用isEnabled
或isUserInteractionEnabled
属性启用/禁用按钮。
两者之间的区别是:
isEnabled
是UIControl的属性(UIButton的超类),具有启用/禁用的视觉效果(即变灰)
isUserInteractionEnabled
是UIView的属性(UIControl的超类),虽然没有视觉效果,但可以达到目的
用法:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
假设在Swift 4中,您IBAction
像这样设置了一个按钮,@IBAction func nextLevel(_ sender: UIButton) {}
并且在应用程序中发生了其他操作(例如,计时器,gamePlay等)。与其禁用segue按钮,不如让您的用户选择在其他动作仍在发生且不崩溃APP的情况下使用该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
按钮冲突。因此,避免崩溃。
可以通过代码在Swift 4中禁用该按钮
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}