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

时间:2012-01-09 06:41:57

标签: iphone objective-c uibutton uitextfield uitextfielddelegate

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

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

我在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;

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

感谢!!!

1 个答案:

答案 0 :(得分: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来实现这个目的。属性。它对我来说很好,有一个美好的一天