如何通知UITextField中的更改?

3 uibutton uitextfield

我有两个文本字段(一个用于用户名,另一个用于密码),我有一个按钮(用于登录).两个文本字段都将clearButtonMode设置为YES(即我在文本字段的右端提供小的十字x按钮,只需单击一下即可擦除字段).

最初,登录按钮被禁用.如果且仅当两个文本字段都应至少包含一个字母时,我想启用它.它也应该在点击十字按钮时工作.

请建议我如何做到这一点....

提前致谢

Nic*_*ver 10

您可以对这两个字段使用UITextFieldTextDidChangeNotification通知,并相应地为您的按钮设置启用.

示例代码:

// add the observer
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(textFieldDidChange:) 
                                             name:@"UITextFieldTextDidChangeNotification" 
                                          object:nil];

// the method to call on a change
- (void)textFieldDidChange:(NSNotification*)aNotification 
{
    myButton.enabled = [self bothTextFieldsHaveContent];
}

- (BOOL)bothTextFieldsHaveContent
{   
    return ![self isStringEmptyWithString:textField1.text) && 
           ![self isStringEmptyWithString:textField2.text);
}

// a category would be more elegant
- (BOOL)isStringEmptyWithString:(NSString *)aString
{
    NSString * temp = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    return [temp isEqual:@""];
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然现在没有功能差异,但你应该使用`UITextFieldTextDidChangeNotification`用户信息键而不是显式的NSString` @"UITextFieldTextDidChangeNotification"`(只需删除`@`和引号).用户信息密钥的值可能会及时更改,如果是这样,使用显式NSString将破坏您的代码.遵循最简单的最佳实践是一个好主意. (4认同)