0

テキストフィールドを含むカスタムセルを含むテーブルビューがあります。私は今、特有の問題に直面しています:

  1. 最初の行のテキストフィールドをタップすると、-beginEditingが呼び出されます。
  2. 次に、値を変更して、2行目のテキストフィールドをタップします。したがって、最初の行の-didEndEditingが呼び出されます。このdidEndには、他のクラスで呼び出されるいくつかの解析メソッドがあります。しかし、それらは現在実行されていません。didEndの直後に、2行目のテキストの-beginEditingが呼び出されます。その後、解析が行われます。今までは大丈夫です。
  3. 解析が終了すると、解析からのオブジェクトが他のクラスに設定され、フローはここで停止するはずですが、どこから、なぜかわかりません。2行目の-didEndEditingが呼び出されます。また、resignfirstresponderはどこにも書き込まれていませんが、キーボードは閉じられます。

なぜこれが起こっているのか、そしてそれをどのように解決するのか、何か手がかりはありますか?

4

1 に答える 1

0

これは、Apple がシステムを設計した方法です。すべての開発者は、(正しいか間違っているかに関係なく) それに対処する必要があります。重要なのは、「textField」プロパティが与えられているため、どの textFields がデリゲート メッセージを送信しているかがわかります。

解決策は、1 つ以上の変更可能な辞書 (または何らかのデータ構造) を使用して、個々の textField の状態を維持することです。textField オブジェクトをキーとして使用するプライマリ ディクショナリを作成してから、各 textField について、現在の状態と保持したいその他の情報を含むディクショナリを作成できます。

おそらく、エレガントではないがコーディングが簡単なソリューションをハックすることができます。いずれにせよ、これらのメッセージには重複があり、それを回避する方法はありません。

編集: タグをキーとして使用するか、保持されない NSValue ポインター オブジェクトを作成しますが、テキスト フィールド自体は使用しないでください。

于 2012-08-10T12:32:09.180 に答える