0

フィールドが空の場合でも、ユーザーが UITextField でバックスペース キーを押したときに通知を受け取る方法はありますか?

ユーザーが空のフィールドでバックスペースを使用したときに、いくつかのコードをトリガーできるようにしたいと考えています。

4

4 に答える 4

0

テキストが削除されたときではなく、バックスペース キーが押されたときを検出する必要があるため、実装以外にかなり多くのことを行う必要がありますUITextFieldDelegate

すべてのメソッドをプライベート クラスに転送する方法については、このブログ投稿をお読みください。ライターは、これらのイベントを検出するために、実行時に動的にサブクラス化します。UITextFieldUIKeyInputUIFieldEditorUIFieldEditor

これがあなたを正しい方向に向けてくれることを願っています!

于 2012-09-04T09:27:08.623 に答える
0

あなたが望むものを手に入れるためのテクニックを考えることはできますが、それには少しコードが必要です。本質的に、文字列の先頭には常に単一の Unicode「スペース」文字を保持します。私は本を​​持っていませんが、使用できる非常に薄いスペース文字があります。

ほとんどのコードをここに配置します。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  • フィールドの編集が開始されたら、そこにある文字列の前にスペースを付けます
  • ユーザーが shouldChangeCharactersInRange に見られるようにテキストを追加するときは、それを追加します。
  • ユーザーが最後の最後の文字、またはそれを含む範囲を削除しようとすると、NO が返され、変更が行われ、先頭のスペース文字が追加されます。
  • textField の編集が終了したら、先頭のスペースを削除します
于 2012-09-04T11:51:09.217 に答える
0
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];

これは、ユーザーがキーを押すたびに通知を受ける方法です。次に、どのキーが押されたかを把握する必要があります(通知ではプロパティだと思います)。

または、テキストフィールドデリゲート関数を使用できます

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

どのキーが押されたかを知るには

于 2012-09-04T08:47:09.653 に答える