如何仅在iphone应用程序中接受输入字段中的数字

时间:2013-03-13 08:22:45

标签: iphone ipad uitextfield

我正在创建一个应用程序,我希望当用户输入任何数据,然后用户输入,如果他输入,所以它不接受此输入并在文本字段中显示任何内容,如果它输入任何数字,那么它应该接受。

5 个答案:

答案 0 :(得分:4)

以下代码可以为您提供帮助,这不允许在您的文本字段中输入除数字之外的任何其他文本。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    static NSCharacterSet *charSet = nil;
    if(!charSet) {
    charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
    }
    NSRange strLocation = [string rangeOfCharacterFromSet:charSet];
    return (strLocation.location == NSNotFound);
}

答案 1 :(得分:2)

为什么你这样做会更好地提供键盘风格

[txtField setKeyboardType:UIKeyboardTypeNumberPad]

或者你可以以编程方式完成:

NSString *nameRegex = @"[0-9]*";
NSPredicate *nameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", nameRegex];
BOOL value = [nameTest evaluateWithObject:string];
if(value == YES)
    {
 // Do Somethings
    }
    else 
        {

    // Do something
    }

答案 2 :(得分:0)

您需要将Textfield的键盘类型设置为Numberpad。

使用代码尝试:(也可以使用XIB属性上的Inter face builder设置)

[txtFieldObj setKeyboardType:UIKeyboardTypeNumberPad];

答案 3 :(得分:0)

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag==3)
{
    NSUInteger lengthOfString = string.length;
    for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++)
    {
        unichar character = [string characterAtIndex:loopIndex];
        if (character < 46 || character==47)
            return NO;
        if (character > 57)
            return NO;
    }
}

将标记设置为textField。

答案 4 :(得分:0)

 NSUInteger lengthOfString = string.length;
    for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++) {
        unichar character = [string characterAtIndex:loopIndex];
        if (character < 48) return NO; // 48 unichar for 0
        if (character > 57) return NO; // 57 unichar for 9
    }

这是代码应该写在textfield中应该更改字符的范围