我有一个视图控制器与两个UITableViewCells
和每个单元格包含UITextField
。在我的导航栏中,我有一个名为“保存”的右侧栏按钮,除非两个文本框都包含文本,否则该按钮将被禁用。保存按钮的默认状态被禁用。从禁用到启用的转换工作正常,但在其中一个文本框被清空时禁用按钮很困难。确定UITextfield是否为空后逐个删除字符
我目前做如下表现:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if title == "Password"{
if textField.tag == 1{
if (textField.text?.isEmpty)!{
passwordField1Empty = true
}
else {
passwordField1Empty = false
}
}
else if textField.tag == 2 {
if (textField.text?.isEmpty)! {
passwordField2Empty = true
}
else {
passwordField2Empty = false
}
}
if passwordField1Empty == false && passwordField2Empty == false {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
else {
self.navigationItem.rightBarButtonItem?.isEnabled = false
}
}
else {
self.navigationItem.rightBarButtonItem?.isEnabled = true
}
return true
}
请告诉我造成的问题是,如果用户可以追溯到并删除一个在文本字段一个每个字符,textField.text?.isEmpty
将被调用每次。当剩下最后一个字符时,textField.text?.isEmpty
将在删除最后一个字符前被调用,所以它最终返回false。 textField.text?.isEmpty
将不会返回true,除非用户再次按下删除按钮,即使没有剩下要删除的东西。
除了'newString'没有'text'属性 - 它只是'newString.isEmpty'这个工作。 – Brosef
哦,没错。对不起,错误!刚编辑我的答案! –