5

ユーザーが12.34のような「ドル金額」を入力するためのテキストフィールドを持つiPhoneアプリを書いています

SDK キーボードには小数点がないようです。(または彼らはそうしますか?)そこで、ユーザーに「1234」と入力させ、小数点を追加することにしました...彼が入力すると....EDITING CHANGEDを​​使用して.

しかし、私のコードが小数点を追加するたびに...別の「EDITING CHANGED」イベントが生成され、無限ループが発生します。

または、上記のすべてを行う簡単な方法はありますか?

4

6 に答える 6

7

新しい SDK の時点で、新しいUIKeyboardTypeDecimalPad.

したがって、次のことを行う必要があります。

myTextField.keyboardType=UIKeyboardTypeDecimalPad;
于 2011-02-13T07:50:33.163 に答える
3

iPhone Developer Portal にバグとしてリクエストを投稿してください。Apple は、それを必要とする多数の開発者から連絡があるまで、小数点記号付きの単純な数字である新しいキーボード タイプを追加しません...

-t

于 2010-01-17T16:52:25.570 に答える
1

カスタム ボタンを既存のキーボードに追加できます。数字キーボードに「完了」ボタンを追加するためにこれを行いました。他の人を追加しないのはなぜですか?削除キーを半分に切り、小数点用に半分のサイズのキーを追加できます。とにかく、ここにコードがあります:

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        if ( MAKE SURE THIS IS BEING CALLED BY THE CORRECT TEXT FIELD ) {

           // locate keyboard view
           UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
           UIView* keyboard;

           for(int i = 0; i < [tempWindow.subviews count]; i++) {
                  keyboard = [tempWindow.subviews objectAtIndex:i];
                  // keyboard view found; add the custom button to it
                  if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
                         [keyboard addSubview:doneButton];
           }
        }
        else
           [doneButton removeFromSuperview];
    }  

キーのように見えるように、画像から UIButton を作成する必要があります。上記の関数を使用して、呼び出されるたびにキーボードに追加します。実際にはかなりうまく機能します。

于 2010-01-17T21:43:36.830 に答える
0

キーボードの上部にあるため完全ではありませんが、inputAccessoryView にボタンを追加できます (文書化されており、正当です)。フィールドに小数点を追加するメソッドにタッチアップをマップして、xib ファイル (メイン ビューではない) にツールバーを定義します。私はdoLoadでそれを割り当てます:

    descriptionTextArea.inputAccessoryView = editorControlView;
于 2010-09-05T03:02:59.660 に答える
0

UITextFieldデリゲート中に のテキストを変更できます。textField:shouldChangeCharactersInRange:replacementString:このメソッドから NO を返すだけで、次のようにテキストを変更します (小数点を追加します)。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // add decimal point to newText

    textField.text = newText;
    return NO;
}

または、次のように、値変更ハンドラーで静的 BOOL を使用して、自分で値を変更していることを示します。

-valueDidChange:(id)notify {
     static BOOL ownChange = NO;
     if (ownChange) return;
     ownChange = YES;
     textField.text = "12.23";
     ownChange = NO;
}

ただし、これはきれいではありません:)

于 2010-01-17T10:42:29.333 に答える
-1
  1. 独自のビューをキーボードとして作成する (推奨)、または
  2. 数字と句読点のキーボードを使用して検証を行うか、
  3. 「ドル」と「セント」のテキスト フィールドを区切ります (推奨されません)。
于 2010-01-17T06:48:45.313 に答える