誰でもこれを手伝ってもらえますか:UITextField
入力番号を実装する必要があります。この数値は、12.3456 または 12.3400 のように常に 4 桁の 10 進数形式である必要があります。そこでNSNumberFormatter
、小数点以下の桁数に役立つものを作成しました。
UITextField
値を設定しています
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
方法。入力を処理し、フォーマッタを使用して、最後に呼び出します[textField setText: myFormattedValue];
これは正常に機能しますが、この呼び出しはカーソルをフィールドの最後に移動します。それは望ましくありません。たとえば、フィールドに 12.3400 があり、カーソルが一番最初にあり、ユーザーが 1 を入力します。結果の値は 112.3400 ですが、カーソルは最後に移動します。ユーザーが期待するときにカーソルで終了したい(最近追加された番号1の直後)。カーソルの設定に関するトピックがいくつかありますがTextView
、これはUITextField
. selectedTextRange
また、カーソル位置を適切に保存するフィールドをキャッチしようとしましたが、setText
メソッド呼び出しの後、これは自動的に変更され、原点UITextRange
が失われます (現在に変更されます)。うまくいけば、私の説明は明確です。
これで私を助けてください。どうもありがとうございます。
EDIT:最後に、編集全体の後に機能をフォーマットの変更に切り替えることにしましたが、十分に機能します。セレクターを追加することでそれを行いましたforControlEvents:UIControlEventEditingDidEnd
。