我的vc包含:
-1名称textView
-1标签//用于调味
-2单选按钮//是和否
-1 nextButton
我想做的是保持nextButton禁用,直到textView填写完毕,标签的文本值从其初始标题“ Pick a Flavor”更改为他们选择的口味,并选择其中一个单选按钮
我知道使用textView的gr.df
可以在用户完成编辑禁用或启用nextButton后听其更改。
textViewDidEndEditing()
除了检查nameTextView中是否包含文本之外,我还如何根据是否选择了一个单选按钮来禁用或启用nextButton以及更改标签的文本? < / p>
仅供参考,标签文本最初使用“选择口味”设置。我有一个手势识别器连接到它,当点击它时,将显示一个带有tableView的新vc。用户选择一种口味,协议将其发送回该vc,并且标签文本将更改为所选的任何口味(例如,如果选择,标签标题将显示“ Butter Pecan”)。只要标签的标题仍设置为“ Pick a Flavor”,就应禁用nextButton。
代码:
func textViewDidEndEditing(_ textView: UITextView) {
handleTextInputChanged()
}
@objc func handleTextInputChanged() {
let isFormValid = nameTextView.text?.count ?? 0 > 0
if isFormValid {
nextButton.isEnabled = true
nextButton.backgroundColor = .red
} else {
nextButton.isEnabled = false
nextButton.backgroundColor = .lightgray
}
}
答案 0 :(得分:0)
您需要创建一个检查所有此类功能的功能
func checkAll() {
nextButto.isEnabled = flavorLabel.text != "Pick a Flavor" &&
nameTextField.text != "" &&
(noButton.someProerty != || yesButton.someProerty != )
}
并从文本字段和按钮目标中调用它
var ob:NSKeyValueObservation?
ob = flavorLabel.observe(\.text,options:[.new], changeHandler: { [unowned self] _, change in
self.checkAll()
}
我离开了无线电检查,因为它们都是自定义的,所以您应该知道要检查什么,然后可以在目标方法内将selected的tag设置为1并根据它或您想要的其他逻辑进行检查