値を互いに同期させる必要がある 2 つの NSTextField コントロールを含むウィンドウがあります。具体的には、1 つは幅で、もう 1 つは長さであり、それらの比率は特定の縦横比に等しくなる必要があります。ユーザーが好きな方を設定し、もう一方を自動的に更新できるようにしたいと考えています。
私の最初のアプローチ: 2 つのコントロールのそれぞれのデリゲートをウィンドウ コントローラーに設定します。controlTextDidEndEditing メソッドを実装しました。差出人を確認します。幅フィールドの場合は、高さフィールドを計算し、バインドされたプロパティ (self.my_height = self.my_width/aspectRatio) を介してその値を更新しました。同様に、高さフィールドの場合、(self.my_width = self.my_height*aspectRatio)。
しかし、私は思わぬ障害にぶつかりました。アスペクト比が 1.5 であると仮定します。ユーザーは幅フィールドに 100 を入力し、別のフィールドに移動します。高さフィールドは 66 に更新されます (良くも悪くも、常に切り捨てを選択しました)。ユーザーは高さフィールドをクリックし、何も変更せず、他の場所をクリックします。幅フィールドは 99 に更新されます。ユーザーは頭を掻いています。
私の洗練。また、ウィンドウ コントローラーに controlTextDidChange メソッドを実装しました。これは、静的 (ファイル スコープ) BOOL 変数 (gTextFieldDidChange) を YES に設定するだけです。ここで、controlTextDidEndEditing に入ると、gTextFieldDidChange の状態を確認します。いいえの場合は、すぐに戻ります。YES の場合、gTextFieldDidChange をクリアして NO に戻し、長さ/幅の更新を処理します。
これは私にとっては問題なく機能しているようですが、むしろ「裏口」のようです。私が見逃しているよりクリーンでスマートなアプローチはありますか?
あらゆる/すべての提案に感謝します。マイク