如何解决使用 UI 文本字段输入的颜色设置背景颜色
我是 swift 的新手,我正在尝试将我的背景颜色设置为用户输入到 UI 文本字段中的颜色。有没有办法做到这一点?
解决方法
我建议聆听 UITextFieldDelegate
方法,而不是为 textFieldDidChange
添加目标,只要文本字段中的文本发生变化(即使只是添加单个字符),就会调用该目标。
textFieldShouldReturn(_:)
委托方法似乎适合您的目的 - 当按下 Return 键时会调用此方法。
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self /// set the delegate
}
}
extension ViewController: UITextFieldDelegate {
/// one of many UITextField delegate methods: see here for more https://developer.apple.com/documentation/uikit/uitextfielddelegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField.text?.lowercased() {
case "red":
view.backgroundColor = UIColor.red
case "green":
view.backgroundColor = UIColor.green
default:
view.backgroundColor = UIColor.white /// default if entered text was not Red or Green
}
return true /// allow the return button to be pressed
}
}
结果:
通过将以下代码添加到您的 ViewController 的 viewDidLoad() 来订阅 textField 中的更改:
override func viewDidLoad(){
//Subscribe to changes in the textField
textfield.addTarget(self,action: #selector(ViewController.textFieldDidChange(_:)),for: .editingChanged)
}
您可以使用 textField.text
获取 UITextField 的名称,并将其传递给 UIColor 的初始值设定项,并使用它来设置视图背景的颜色,如下所示:
@objc func textFieldDidChange(_ textField: UITextField) {
if let text = textField.text{
self.view.backgroundColor = UIColor(named: text) ?? UIColor(named: "white")
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。