【发布时间】:2015-11-27 09:15:16
【问题描述】:
我想跟踪 2 个UITextField,如果它们为空,则禁用完成按钮。在viewDidLoad 中,我禁用了按钮,因为所有UITextField 都是空的。所有文本字段都有委托,我正在-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 中跟踪它们的状态@
if (textField == self.emailTextField) {
if (self.passwordTextField.hasText && [string length] > 0) {
[self.loginButton setEnabled:YES];
}
else {
[self.loginButton setEnabled:NO];
}
}
else if (textField == self.passwordTextField) {
if (self.emailTextField.hasText && [string length] > 0) {
[self.loginButton setEnabled:YES];
}
else {
[self.loginButton setEnabled:NO];
}
}
return YES;
我知道这不是跟踪的最佳解决方案,因为现在当有人只删除字符、字符串为空且按钮被禁用时,我遇到了问题。提前感谢您与我一起寻找最佳解决方案。
【问题讨论】:
-
你可以检查 self.textField.text 的长度而不是字符串的长度,但我建议你使用 Reactive Cocoa
-
是的,但是问题是下一种情况:如果文本字段为空,我输入一个字符,它仍然检测到它是空的,因为在前一个字符串被替换之前触发了应该方法(一个字符)。
-
@Stefan 点击按钮时直接检查不是更好吗?该按钮始终处于启用状态,当单击按钮时,您检查 textField.text.length 并且如果为 0,则返回一个 uialertview 以传达文本字段为空
-
是的,但规范要求如果这两个字段未填充,则禁用该按钮...
-
是真的,我不记得了。如果您检查 textField 是否有一些文本,然后使用 [textField.text stringByReplacing...] 创建一个新字符串并检查该字符串的长度怎么办?顺便说一句,我认为 ReactiveCocoa 非常适合这个。
标签: ios objective-c iphone uitextfield