在iOS Apprentice系列电子书中,您应该构建一个Checklist应用程序。教程允许您根据UITextField对象内部的文本禁用并启用按钮栏上的“完成”按钮。
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string];
self.doneBarButton.enabled = ([newText length] > 0);
return YES;
}
现在,如果文本字段为空,则键盘设置为禁用“完成”按钮(在键盘上)。有没有办法观察键盘完成按钮的状态,并完成按钮栏按钮相应地反映它?
IE,启用键盘完成按钮后,按钮栏已完成按钮。
答案 0 :(得分:1)
UITextField
通过enablesReturnKeyAutomatically
属性支持您想要的内容。此属性来自UITextInputTraits
协议。
创建UITextField
时,请设置此属性。
self.textField.enablesReturnKeyAutomatically = YES;
这意味着如果文本字段为空,则返回键(无论标记的是什么)将自动禁用。并在输入文本时自动启用。
无法观察此状态,因此您必须实施textField:shouldChangeCharactersInRange:replacementString:
已有的代码来更新其他完成按钮。
答案 1 :(得分:0)
您可以使用以下事件在文本字段中添加目标。
UIControlEventEditingDidBegin
UIControlEventEditingChanged
UIControlEventEditingDidEnd
UIControlEventEditingDidEndOnExit
UIControlEventAllEditingEvents
实施例:
在viewDidLoad
[_textField addTarget:self action:@selector(textFieldEditing:) forControlEvents:UIControlEventAllEditingEvents];
行动方法:
- (void)textFieldEditing:(id)sender
{
_doneButton.enable = ([[sender text] length]>0);
}