3

在我的应用程序中,我在登录页面中有两个文本字段(用户名和密码)和 UI 按钮。

如果文本字段(密码)有文本,我想启用按钮。

我在 viewDidLoad() 中创建了具有以下属性的 UITextfield 和 UIbutton。

 self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
[self.btnLogin setEnabled:NO];

我已经尝试了下面的代码,但没有运气。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == self.txtFieldPassword) {

    // checking for any whitespaces
    if(([string rangeOfString:@" "].location != NSNotFound))
    {
        return NO;
    }  

    if( [[self.txtFieldPassword.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] )
        self.btnLogin.enabled = YES;
    else
        self.btnLogin.enabled = NO;
}

return YES;
}

但是,如果我删除了 UitextField 中的以下行,它就起作用了。

self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing;

我想启用具有上述属性的按钮。如何实现?

谢谢!!!

4

1 回答 1

12

您可以只检查 string.length == 0 和 range.length > 0; 这表示删除。但是,您真正想要的只是进行挂起的修改,然后检查您是否仍然有一个非空字符串。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *testString = [textField.text stringByReplacingCharactersInRange:range withString:string];
testString = [testString stringByTrimmingCharactersInSet:
              [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if( testString.length)
    myButton.enabled = YES;
else
    myButton.enabled = NO;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
 _done_button.enabled = NO;
  return YES;
}

您可以使用 self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing 来实现此目的;财产。它对我来说很好,祝你有美好的一天

于 2012-01-09T07:30:58.427 回答