1

iPad のキーボードには、この「元に戻す」キーがあります。

私は UITextField *textField を持っています。 textField.placeholder = @"Input";

textFieldが空ではない(textField.text = @"Something";)と仮定して、textFieldをタッチしてfirstResponderになったので、

1, textField 内のすべての文字列をバックスペースします (プレースホルダーが表示されます) 2, 別の何かを入力します 3, もう一度すべてをバックスペースします (プレースホルダーが表示されます) 4, 「元に戻す」キーを押します

結果: textField.placeholder が表示され、textField.text が重なっています。さらに、UITextFieldDelegate (shouldChangeCharactersInRange および UITextFieldTextDidChangeNotification) は呼び出されていません。

誰も同じ問題に直面していますか?どういうわけかiOSのバグですか?

4

1 に答える 1

0

従うべきいくつかの手順は次のとおりです。この方法でのみ実行したかどうかを確認してください。

  1. nibファイルを使用したテキストフィールドオブジェクトへのIBOutlet接続
  2. nibファイルのテキストフィールドの委任プロパティをファイル所有者に設定します
  3. .h ファイルで実装
  4. .m ファイルに次のメソッドを実装します。
    • (void)textFieldDidBeginEditing:(UITextField *)textField
    • (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

したがって、編集を開始すると、最初のメソッドが呼び出されます。その後、テキストフィールドの更新ごとに2番目のメソッドが呼び出されます。

ブレークポイントを使用すると、正確なシナリオを把握するのに役立ちます。

于 2011-11-21T15:46:20.353 に答える