0

皆さん、これが私にとって問題になるとは思いません。キーボードでキーを押すと、UITextField デリゲートが関数をトリガーします。

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
       if ([string lenght]==0) NSLog("Backspace was pressed");
 }

しかし問題は、テキストが空のときにバックスペースを押すと、この関数IS NOT が呼び出されることです。この状況でバックスペースが押されたことを検出する方法はありますか?

または、このバグを Apple に送信する必要がありますか?

Ps。カーソルが前のUITextFildに移動するためにこれが必要です(1文字でバックスペースを押すと機能します)

4

2 に答える 2

1

テキストフィールドが空で、範囲内の文字が変更されていないため、メソッドが起動されないため、これはバグではないと思います。AppleのUITextFieldDelegate ドキュメントには次のように書かれています。

ユーザーがテキスト フィールドに新しい文字を入力するか、既存の文字を削除するたびに、テキスト フィールドはこのメソッドを呼び出します。

TextField に既存の文字がないため、メソッドは起動されません。質問への回答にはなりませんが、SDK のバグではありません

必要な動作を得るために、この質問は既にここで回答されています: Can I detect the delete key even if the UITextField is empty?

于 2011-08-26T14:19:02.423 に答える
0

実際、これはバグではありません。ここでは、テキストフィールドの値に変更がないため、デリゲート メソッドはイベントをキャッチしていません。

これは、UITextField をサブクラス化し、目的のテキスト フィールドのカスタム クラスとして追加することで実装できます。次に、メソッド「deleteBackward」をオーバーライドします。このメソッドは、すべてのバックスペース イベントをキャッチします。

Swift のコード:

override func deleteBackward() {
        super.deleteBackward()
        // Enter your stuff here
    }

また、イベントの基本的な機能を実行しているため、スーパー メソッドも呼び出していることを確認してください。

于 2016-06-29T06:03:46.267 に答える