0

Cocoaバインディングを使用して変数にバインドされた数値フォーマッタを備えたテキストフィールドがあります。値をインクリメントするために同じ変数にバインドしたステッパーもあります。テストに NSLog を使用しましたが、うまく機能します。

私の問題は、ボックスに数値を入力するたびに、Enter キーを押さない限り変数が更新されないことです。ユーザーが入力を終了したことを NSTextBox はどのように認識しますか? 数字が入力されるたびに変数を動的に更新する方法はありますか?

どうもありがとう

リッチ

4

2 に答える 2

0

Interface Builder でコントロールの「Continuous」プロパティをオンにすると、値が変更されたときにフィールドがバインディングを開始するはずです。

于 2013-01-29T16:14:04.717 に答える
0

まず、すぐに更新してもよろしいです?ユーザーのキーストロークの 1 つが無効な文字 (数字ではない) である可能性があります。NSNumberFormatter が役立ちますが、適切な数値エントリとして検証する前に、エントリを「コミット」する必要があると思います。

次に、-textDidChange: NSTextDelegateメソッドをいつでも実装できます。繰り返しますが、上記と同じ問題です。無効な入力がトリガーされる可能性があります。これを回避するには、文字列入力から NSNumber を作成してみてください。NSNumber を取得できない場合は、取得するまで反応しないでください (フィールドが無効な入力でフォーカスを失った場合は、最後に戻します)。有効な値) しかし、無料で取得できる「コミット時に検証」 NSNumberFormatter 動作を複製しています。

于 2013-01-29T17:09:05.967 に答える