![](/img/trans.png)
[英]iOS Custom .xib view button tap detect in view controller (Swift)
[英]iOS Swift 5 unable to disable button in custom view
我有一个带有两个按钮的自定义视图,自定义视图有一个关联的UIView
class 文件。
这个想法是button2
被禁用,直到button1
被按下,然后一旦它( button2
)被按下button2
被禁用。
请注意,禁用是指禁用交互并且按钮显示为灰色。 奇怪的是交互被禁用,但按钮没有变灰
我正在使用button2.isEnabled = false
当按钮是主视图的一部分时,这非常有效,但是由于将按钮重构为自定义视图,我似乎无法禁用按钮(按钮变灰)。 自定义视图提供了很好的关注点分离,所以我不想丢失它。
我似乎确实能够根据需要设置按钮的标题,所以我相信我已经正确定义了按钮IBOutlet
。
按钮的@IBAction
被正确触发。
相当有趣的是,在界面生成器中,即使在属性检查器中取消选择enabled
,该按钮也会显示在非灰色 state 中。
谢谢
class ControlPanelView: UIView {
@IBOutlet var contentView: UIView!
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBAction func button1Action(_ sender: Any) {
button2.isEnabled = true
}
@IBAction func button2Action(_ sender: Any) {
button2.isEnabled = false
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit() {
Bundle.main.loadNibNamed("ControlPanelView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
// button is still enabled
button2.isEnabled = false
}
}
请注意,这是针对 iOS 10 及更高版本的 Xcode 11 中的 Storyboard 项目。
我在 Xcode 中尝试过。 遇到了同样的问题。 我用这个解决了这个问题
private func commonInit() {
...
// button is still enabled
DispatchQueue.main.asyncAfter(deadline: .now() + 0.001) {
button2.isEnabled = false
}
}
让我知道它是否有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.