如何同时检查 textField 和 textView 中的相同条件?
How to check the same condition in textField and textView at the same time?
我有2个textFields和1个textView,所有这些字段都有内容,来自previousViewController
,我需要根据用户在这些字段中的更改启用或禁用rightBarButtonItem,如果新内容是与来自 previousViewController
的当前内容不同。如何同时查看textFields和textView?现在我有(条件有时会相互矛盾)
在 viewDidLoad 中:
loginTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
displayNameTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
然后:
@objc func textFieldDidChange(_ textField: UITextField) {
if displayNameTextField.text != currentDisplayName || loginTextField.text != currentUsername {
self.navigationItem.rightBarButtonItem?.isEnabled = true
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = false
}
}
func textViewDidChangeSelection(_ textView: UITextView) {
if aboutTextView.text == currentAbout {
self.navigationItem.rightBarButtonItem?.isEnabled = false
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
}
为什么不把它提取到函数中,然后像这样检查它:
@objc func textFieldDidChange(_ textField: UITextField) {
validateFields()
}
func textViewDidChangeSelection(_ textView: UITextView) {
validateFields()
}
func validateFields() {
if aboutTextView.text == currentAbout || displayNameTextField.text == currentDisplayName || loginTextField.text == currentUsername {
self.navigationItem.rightBarButtonItem?.isEnabled = false
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
}
我有2个textFields和1个textView,所有这些字段都有内容,来自previousViewController
,我需要根据用户在这些字段中的更改启用或禁用rightBarButtonItem,如果新内容是与来自 previousViewController
的当前内容不同。如何同时查看textFields和textView?现在我有(条件有时会相互矛盾)
在 viewDidLoad 中:
loginTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
displayNameTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
然后:
@objc func textFieldDidChange(_ textField: UITextField) {
if displayNameTextField.text != currentDisplayName || loginTextField.text != currentUsername {
self.navigationItem.rightBarButtonItem?.isEnabled = true
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = false
}
}
func textViewDidChangeSelection(_ textView: UITextView) {
if aboutTextView.text == currentAbout {
self.navigationItem.rightBarButtonItem?.isEnabled = false
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
}
为什么不把它提取到函数中,然后像这样检查它:
@objc func textFieldDidChange(_ textField: UITextField) {
validateFields()
}
func textViewDidChangeSelection(_ textView: UITextView) {
validateFields()
}
func validateFields() {
if aboutTextView.text == currentAbout || displayNameTextField.text == currentDisplayName || loginTextField.text == currentUsername {
self.navigationItem.rightBarButtonItem?.isEnabled = false
} else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
}