@rmaddyに答えます。textField編集するたびに、そのメソッドが呼び出され、そのSPECIFIC textFieldとのテキストの長さがチェックされますenable or disable barButtonItem。ただし、問題はUIBarButtonItemの有効化または無効化に関するものであり、テキストを含む6つのtextFieldのいずれかでボタンを有効にする必要があります。テキストがない場合は、それだけを無効にする必要があります。textFieldsしたがって、ビュー内ですべてを繰り返す以外にオプションはありません。それぞれのターゲットを書く代わりに、textFieldあなたは使うことができますUITextFieldTextDidChangeNotification
その通知を:methodに追加し、viewWillAppear:methodで削除するだけですviewWillDisappear。
このコードを見てください。
-(void)viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(validateFields) name:UITextFieldTextDidChangeNotification object:nil];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];
[super viewWillDisappear:animated];
}
- (void)validateFields {
// I think you would have outlet for all textFields.So you can check the textfields having text or not ..
if([textField1.text length] || [textField2.text length] || ....){
[yourBarButton setEnabled:YES];
}else{
[yourBarButton setEnabled:NO];
}
}
アップデート:
@rmaddyの回答も機能します。彼の答えの他の部分にコメントを見るのを忘れないでください。今では、1人のユーザーが選択する方法によって異なります。