Objective c 在UITextField中用单位屏蔽数字输入

Objective c 在UITextField中用单位屏蔽数字输入,objective-c,formatting,uitextfield,Objective C,Formatting,Uitextfield,我已使用UIKeyboardTypeNumberPad创建了一个UIExtField: tf = [self makeTextField:self.groesse placeholder:@"erforderlich"]; [tf setKeyboardType:UIKeyboardTypeNumberPad]; 现在,我试图屏蔽输入的数字,例如,它将在UITextField中显示为187cm。我已经试过了 - (BOOL)textField:(UITextField *)textField

我已使用UIKeyboardTypeNumberPad创建了一个UIExtField:

tf = [self makeTextField:self.groesse placeholder:@"erforderlich"];
[tf setKeyboardType:UIKeyboardTypeNumberPad];
现在,我试图屏蔽输入的数字,例如,它将在UITextField中显示为
187cm
。我已经试过了

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string {
    if(textField == groesseField_) {
        textField.text = [NSString stringWithFormat:@"%@ cm",string];
        return NO;
    }
    return YES;
}
但是现在,对于上面的例子,我只能输入一个数字而不是三个


谁能帮帮我,我做错了什么谢谢。

您需要根据文本字段中的当前文本和正在对范围进行的编辑的组合构建文本,然后添加后缀:

- (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;

}

这是因为每次调用variable
string
时,该方法只包含最后一个字符。因此,您需要将此字符添加到文本字段中

这应该起作用:

- (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;
}
另外,您应该编写特定的代码来维护退格按钮。但实际上,当用户结束对
-(void)textfielddidediting:(UITextField*)sender的编辑时,我宁愿添加
cm