3

私のアプリでは、SignInページに2つのテキストフィールド(ユーザー名とパスワード)とUIボタンがあります。iPhoneアプリでUITextFieldが空でない場合、UIButtonを有効にする

テキストを持つテキストフィールド(パスワード)がある場合は、ボタンを有効にしたいと思います。

私は、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; 

私は上記のプロパティでボタンを有効にしたいと思います。それを達成する方法?

ありがとうございました!

答えて

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でこれを達成することができます。プロパティ。それは私のためにうまくいって、素晴らしい一日を持っています

+0

ありがとう!!! Balakrishnan Mca ..私はそれをうまく処理しました...あなたは私の一日を作っています... – user2136

+1

shouldChangeCharactersInRangeは 'BOOL'を返すべきです... – barfoon

関連する問題