iOS 6 - 响应键盘完成按钮状态

时间:2013-03-08 00:59:42

标签: ios cocoa-touch

在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,启用键盘完成按钮后,按钮栏已完成按钮。

2 个答案:

答案 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);
}