在 UITextField 中输入满分 10 分?

Input score out of 10 into UITextField?

我正在尝试创建一个 UITextField,用户可以在其中输入 1-10 之间的数字,以便给出满分 10 分的分数。例如,5/10、9/10 等

理想情况下,我希望用户只能输入 1 到 10,并显示为 x/10。其中 x 是用户输入的分数。

我一直在考虑使用:

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

但我不确定下一步该做什么。任何帮助将不胜感激。

乔希

试试这个

这将限制文本字段只能输入一个字符

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

return (textField.text.length <= 0);
}

并将键盘类型设置为数字键盘,这样用户只能输入数字,用户只能输入 0 到 9 之间的数字。

希望对您有所帮助。

试试这个

这将允许您输入 1-10 范围内的数字

#define NUMBERS_ONLY @"1234567890"
#define CHARACTER_LIMIT 2

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    NSString *myTextField = [textField.text stringByAppendingString:filtered];
    return (([string isEqualToString:filtered])&&(newLength <= CHARACTER_LIMIT)&&(myTextField.integerValue<=10));
}

试试下面的代码希望它能满足你要找的所有条件

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
    NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];

        if (resultingString.length > 2 && range.length == 0)
        {
            return NO;
        }
        else
        {
            if (resultingString.length<=1) {
                return YES;
            }
            else
            {
                NSString *firstDigit = [resultingString substringToIndex:1];
                NSString *secondDigit = [resultingString substringFromIndex:1];
                if ([firstDigit intValue]>1) {
                    return NO;
                }
                else if ([secondDigit intValue]>0)
                {
                    if ([firstDigit intValue]==0) {
                        return YES;
                    }
                    return NO;
                }
                else
                {
                    return YES;
                }
            }
        }
}