UITextField のテキストが変更されるたびに、UIControlEventEditingChanged を使用して更新を登録しようとしています。しかし、本当に奇妙なことが起こっています.handlefieldTextChangedは、何かを入力したときではなく、UITextFieldで文字を削除したときにのみ呼び出されます。
これは私のコードです:
[textField setDelegate:self];
[textField addTarget:self action:@selector(handlefieldTextChanged) forControlEvents:UIControlEventEditingChanged];
- (IBAction)handlefieldTextChanged {
NSLog(@"handleChange");
}
これで、handlefieldTextChanged がヘッダー ファイルで宣言され、Interface Builder で接続すると何かが修正されるかどうかを確認するためだけに IBAction になりますが、修正されません。
とにかく、これが起こる原因は何ですか?何を試しても、真のテキストフィールドの変更された更新を取得できません。
編集1:
- (NSString *)removeBadWordsFromString:(NSString *)string {
for (NSString * word in badWords){
string = [string stringByReplacingOccurrencesOfString:word withString:@""
options:NSCaseInsensitiveSearch range:NSMakeRange(0, string.length)];
}
return string;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
[textField setText:[self removeBadWordsFromString:[NSString stringWithFormat:@"%@%@", textField.text, string]]];
return (string.length == 0);
}