1

UIKeyboardTypeNumberPad で UITextField を作成しました。

tf = [self makeTextField:self.groesse placeholder:@"erforderlich"];
[tf setKeyboardType:UIKeyboardTypeNumberPad];

187 cm今、入力された数値をマスクしようとしています。たとえば、UITextField のように表示されます。私はそれを試しました

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string {
    if(textField == groesseField_) {
        textField.text = [NSString stringWithFormat:@"%@ cm",string];
        return NO;
    }
    return YES;
}

しかし今では、上記の例では 3 桁ではなく 1 桁しか入力できません。

誰かが私を助けてくれますか? - ありがとう。

4

2 に答える 2

0

テキスト フィールド内の現在のテキストと範囲に対して行われている編集の組み合わせからテキストを作成し、サフィックスを追加する必要があります。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string {

if(textField == groesseField_) {
    NSString *completeText = [textField.text stringByReplacingCharactersInRange:range withString:string];
    textField.text = [completeText stringByAppendingString:@" cm",];
    return NO;
}
return YES;

}
于 2013-06-14T16:36:36.023 に答える
0

メソッドが呼び出されるたびに変数stringには最後の文字が 1 つしか含まれないためです。したがって、この文字を textField に追加する必要があります。

これはうまくいくはずです:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string {
    if(textField == groesseField_) {
        NSString *currentString = textField.text;
        if ([currentString isEqualToString:@""])
        {
            currentString = [NSString stringWithFormat:@"%@ cm",string];
        }
        else
        {
            currentString = [currentString stringByReplacingOccurrencesOfString:@" cm" withString:[NSString stringWithFormat:@"%@ cm", string]];
        }
        textField.text = currentString;
        return NO;
    }
    return YES;
}

また、バックスペース ボタンを維持するための特定のコードを記述する必要があります。cmしかし、実際には、ユーザーが編集を終了したときに追加したいと思います- (void)textFieldDidEndEditing:(UITextField *)sender

于 2013-06-14T16:46:39.547 に答える