動的データの表示にカスタムデータオブジェクトを使用するNSTokenFieldを実装しました。デリゲートは正常にセットアップされ、トークンの正しい値が表示されます。内容をプログラムで変更した後にNSTokenFieldを更新する
また、トークンの表示に使用する形式を選択できるメニューを実装しました。しかし、私の問題は、NSTokenFieldがこれらの変更に即座に応答し、新しく選択されたフォーマットでトークンを再描画することができないことです。
NSTokenFieldの外側をクリックすると、最初のレスポンダを辞退するのですぐに再描画されます。最初のレスポンダーを明示的にnilに設定することで、これをプログラムで行うこともできます。これの唯一の問題は、NSTokenFieldがフォーカスを失い、最初のレスポンダーがフィールド内のすべてを選択してユーザーが誤ってコンテンツ全体を上書きする可能性があるため、NSTokenFieldがフォーカスを失うことです。
私の質問は、フォーカスと選択を変更せずにNSTokenFieldでコンテンツを再描画する方法があるかどうかです。
ありがとうございます、私はあなたの提案を後日撮影します。あなたのRoyal PITAに完全に同意してください;) –
あなたの解決策をちょうどチェックして、[tokenField setRepresentedObject:nil];応答のオンとオフを切り替えることと同じ副作用があります。つまり、トークンフィールド全体を選択します。 –
あなたの解決策に基づいて回避策を見つけました:[tokenField setObjectValue:[NSArray arrayWithArray:[tokenField objectValue]]];同じ値を設定して新しい配列内に設定すると、選択の副作用なしにトークンの再描画がトリガーされるようです。アップルがよりクリーンなソリューションを提供する必要がある、ちょっと汚れたハックだ。しかし、とにかく、それが私を受け入れられる解決策に導くように私はあなたの答えを受け入れるだろう。 –