UITextFieldDelegate 的委托 textFieldDidChange 和 shouldChangeCharactersIn 方法的主要区别是什么?
What main difference textFieldDidChange and shouldChangeCharactersIn method, the delegate of UITextFieldDelegate?
谁能解释一下何时使用以及它们之间的区别?
简而言之 textDidChange
当在文本字段中键入任何文本并且您想在 TextField
上键入文本以检查验证或任何内容时发生
func textDidChange(_ textField: UITextField) {
guard let email = emailTextField.text, !email.isEmpty, email.isValidEmail() else {
//Write your code here...
return }
guard let password = passwordTextField.text, !password.isEmpty else {
//Write your code here..
return }
//Write your success code.
}
并且 shouldChangeCharactersIn
在任何键入的键即将在文本字段中打印之前发生事件。这样您就可以验证该密钥并允许或限制该密钥。
例如:如果用户在密码文本字段中输入space,您可以限制该密钥并且space永远不会在文本字段中打印。
在下面的代码中,我在我的文本字段中限制了 space(" ") 键。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if range.location == 0 && string == " " {
return false
}
return true
}
谁能解释一下何时使用以及它们之间的区别?
简而言之 textDidChange
当在文本字段中键入任何文本并且您想在 TextField
上键入文本以检查验证或任何内容时发生
func textDidChange(_ textField: UITextField) {
guard let email = emailTextField.text, !email.isEmpty, email.isValidEmail() else {
//Write your code here...
return }
guard let password = passwordTextField.text, !password.isEmpty else {
//Write your code here..
return }
//Write your success code.
}
并且 shouldChangeCharactersIn
在任何键入的键即将在文本字段中打印之前发生事件。这样您就可以验证该密钥并允许或限制该密钥。
例如:如果用户在密码文本字段中输入space,您可以限制该密钥并且space永远不会在文本字段中打印。
在下面的代码中,我在我的文本字段中限制了 space(" ") 键。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if range.location == 0 && string == " " {
return false
}
return true
}