6

ユーザーが最大値と最小値の間の数値を入力する必要があるがあり、その特定のテストが失敗したことを検出して、より適切なメッセージ (「数値が大きすぎます」) を表示できるNSTextFieldとよいでしょう。NSNumberFormatterはあまり役に立ちません。有効な範囲を表示する必要があります)、または単にフィールドを最も近い有効な値に自動的に設定します。

エラーを変更できないように見えるNSTextFieldデリゲートのメソッドを調べました。また、変更できる を提供するのメソッドをオーバーライドすることを検討しましたが、そうではないようですどの特定のエラーが返されたかを判断する任意の方法。‑control:didFailToFormatString:errorDescription:NSNumberFormatter‑getObjectValue:forString:range:error:NSError

単純な整数を入力しているだけなので、 のほとんどの機能は必要ありませんNSNumberFormatter。独自のフォーマッタをゼロから作成した方がよいでしょうか?

4

2 に答える 2

1

でこれらの制限を適用する代わりに、NSNumberFormatterで発生するロジックで制限を適用することをお勧めしますtextDidChange:。あなたの説明から、あなたはあなたがあなたのナンバーフォーマッターを接続するためにインターフェースビルダーを使用しているかもしれないように聞こえます。代わりに、私はあなたのコントローラーをNSTextFieldDelegate特定のテキストフィールド用。次に、数値フォーマッタとの対話を直接処理できるようになり、特定のエラーラベルのテキストを適切に設定できます。さらに、これにより、より複雑なコンテキスト依存のフォールバック値を指定できます。別名:場合によっては、数値を常にミッドレンジ、ローエンド、古い値、またはユーザーが実行したエッジにフォールバックする必要があります。これにより、ブラックアウト範囲を強制したり、非常に長い小数をきちんとした特定の精度に強制したりすることもできます。

于 2010-06-14T08:24:30.993 に答える
1

NSError で返されるエラーを特定する方法があります。NSError エラー コードのドキュメントでは、最大検証と最小検証の両方の失敗に対するエラーが定義されています。-codeを NSError オブジェクトに送信するだけです。

于 2010-04-27T09:14:04.287 に答える