如何在文本域中应用文本值限制?

时间:2011-08-15 10:19:27

标签: iphone uiview uitextfield uikeyboard uikeyboardtype

  

可能重复:
  Iphone UITextField only integer

我是iPhone平台的新程序员。我想对文本字段应用限制,用户只输入数值而不是任何字符。那么请告诉我如何应用这些限制并在键盘上添加完成按钮?所以我只能使用数字键盘。如果我只使用数字键盘,那么用户只输入数值,那么如何在键盘上添加完成按钮?简而言之,我如何在键盘上添加完成按钮并对字符值应用限制?

2 个答案:

答案 0 :(得分:2)

以下方法确保用户只能输入数字

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

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

    NSNumber* myNumber;
    NSString* myString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    range = NSMakeRange(0, [myString length]);
    [numberFormatter getObjectValue:&myNumber forString:myString range:&range error:nil];

    if (([myString length] > 0) && (myNumber== nil || range.length < [myString length])) {

        return NO;
    }else {
        return YES;
    }
}

当然,您可以设置

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

答案 1 :(得分:0)

您应该将文本字段输入类型设置为键盘并实现UITextFieldDelegate并从textField返回NO:shouldChangeCharactersInRange:replacementString:每当一个字符不在您接受的子集中时(0-9和您想要允许的任何标点符号)。如果用户粘贴,这将导致文本字段忽略任何其他输入。

对于完成按钮,您可以添加一个可以取消键盘的外部按钮,也可以创建一个带键盘和完成按钮的输入视图。