如果UITextField在iPhone应用程序中不为空,则启用UIButton

use*_*136 3 iphone objective-c uibutton uitextfield uitextfielddelegate

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

如果textfield(密码)有文本我想启用按钮.

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

 self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
[self.btnLogin setEnabled:NO];
Run Code Online (Sandbox Code Playgroud)

我试过下面的代码,没有运气.

- (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;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除了UitextField中的以下行,则表明它已经有效.

self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing;
Run Code Online (Sandbox Code Playgroud)

我想启用具有上述属性的按钮.怎么实现呢?

谢谢!!!

Bal*_*Mca 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;
}
Run Code Online (Sandbox Code Playgroud)

你可以用self.txtFieldPassword.clearButtonMode = UITextFieldViewModeWhileEditing来实现这个目的.属性.它对我来说很好,有一个美好的一天