0

在 iOS Apprentice Series 电子书中,您应该构建一个 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,当键盘完成按钮被启用时,按钮栏完成按钮被启用。

4

2 回答 2

1

UITextFieldenablesReturnKeyAutomatically通过该属性支持您想要的。此属性来自UITextInputTraits协议。

当你创建你的UITextField,设置这个属性。

self.textField.enablesReturnKeyAutomatically = YES;

这意味着如果文本字段为空,则 Return 键(无论其标记如何)将自动禁用。输入文本时它会自动启用。

无法观察此状态,因此您必须实现您已经拥有的代码textField:shouldChangeCharactersInRange:replacementString:来更新您的其他“完成”按钮。

于 2013-03-08T02:11:14.763 回答
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);
}
于 2013-03-08T01:41:56.520 回答