0

UITextField を使用して値を入力し、デリゲートを親ビュー コントローラーに設定し、textField.text = @"some text" を使用してテキスト フィールドのテキスト値を設定した後、デリゲート関数 textField:shouldChangeCharactersInRange:replacementString: を呼び出すことができなくなりました。これを防ぐ方法、または setText の後にこの関数を呼び出す方法を教えてください。事前に感謝します。私の下手な英語で申し訳ありません。更新: textField:shouldChangeCharactersInRange:replacementString: 2 回目以降、「バックスペース」をタップすると呼び出すことができません。

4

2 に答える 2

0

デリゲートのメソッドが完全に呼び出されなくなることを意味する場合、テキストフィールドを設定することは理由ではありません。あなたはそれを引き起こすために何か他のことをしている必要があるでしょう。@rdelmarが言うように、割り当てのために呼び出されることはありませんが、将来の編集のために呼び出されます。たとえば、私が書くと...

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.textField.text = @"View will appear";
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSLog(@"Replacement: %@", string);
    return YES;
}

...そうか...

2012-11-25 21:02:34.456 Hello World[6669:c07] Replacement: H
2012-11-25 21:02:34.954 Hello World[6669:c07] Replacement: e
2012-11-25 21:02:35.838 Hello World[6669:c07] Replacement: l
2012-11-25 21:02:35.974 Hello World[6669:c07] Replacement: l
2012-11-25 21:02:36.162 Hello World[6669:c07] Replacement: o
于 2012-11-26T02:07:07.280 に答える
0

コードでテキストを設定するときに、そのメソッドが呼び出されることは想定されていません。なぜそれが必要なのですか-必要な正確なテキストを渡しているので、変更または検証する必要はありません。

于 2012-11-26T01:59:10.817 に答える