在 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;
}
}
}
}
我正在尝试创建一个 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;
}
}
}
}