如何对文本字段中的文本值应用限制?

发布于 2024-11-29 17:52:11 字数 342 浏览 2 评论 0原文

可能的重复:
Iphone UITextField 仅整数

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

Possible Duplicate:
Iphone UITextField only integer

I am new programmer in iPhone platform. I want apply restriction on text field that user enter only numeric value not any character. So please tell me how i apply these restriction and add done button on keyboard? So that i can use only numeric keypad.If i use only numeric pad then user enter only numeric value so how add done button in keypad? In short how i add done button on keyboard and apply restriction for character value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

踏月而来 2024-12-06 17:52:11

下面的方法可以保证用户只能输入数字

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

The following method to ensure user can type only digit

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

Of Course, you can set

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
夕色琉璃 2024-12-06 17:52:11

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

至于“完成”按钮,您可以添加一个关闭键盘的外部按钮,或者创建自己的具有键盘和“完成”按钮的输入视图。

You should set the textfield input type to keypad and implement UITextFieldDelegate and return NO from textField:shouldChangeCharactersInRange:replacementString: whenever a character is not in your accepted subset (0-9 and whatever punctuation marks you want to allow). This will cause the textfield to ignore any other input if pasted by the user.

As for the done button, you can either add an external button which dismisses the keyboard, or create your own input view which has a keypad and done button.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文