Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在文本字段中放置范围和避免特殊字符_Ios_Objective C_Uitextfield_Uitextfielddelegate - Fatal编程技术网

Ios 在文本字段中放置范围和避免特殊字符

Ios 在文本字段中放置范围和避免特殊字符,ios,objective-c,uitextfield,uitextfielddelegate,Ios,Objective C,Uitextfield,Uitextfielddelegate,我正在iOS上工作。我有一个文本字段,其范围应为7位,并避免使用特殊字符。我只想输入0-9999999之间的数字。请帮忙 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if(range.length + range.location > textField.te

我正在iOS上工作。我有一个文本字段,其范围应为7位,并避免使用特殊字符。我只想输入0-9999999之间的数字。请帮忙

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{    
       if(range.length + range.location > textField.text.length)
       {
          return NO;
       }

        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return newLength <= 7;

}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{    
if(range.length+range.location>textField.text.length)
{
返回否;
}
NSUInteger newLength=[textField.text length]+[string length]-range.length;

在textfield委托方法中返回newLength,shouldChangeCharactersInRange

这将只允许0-9个数字,不允许字母,也不允许特殊字符

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *aCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
            for (int i = 0; i < [string length]; i++) {
                unichar aCharacter = [string characterAtIndex:i];
                if (![aCharacterSet characterIsMember:aCharacter]) {
                    return NO;
                }
                  return YES;
            }

}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
NSCharacterSet*aCharacterSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789”];
对于(int i=0;i<[字符串长度];i++){
unichar aCharacter=[字符串字符索引:i];
if(![aCharacterSet特征成员:aCharacter]){
返回否;
}
返回YES;
}
}
使用此

#define acceptableCharacterSet @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:acceptableCharacterSet] invertedSet];

    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

    if(![string isEqualToString:filtered])
        return NO;
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return (newLength > 7) ? NO : YES;
}

但是我想要什么?你是说maxLength?是的,这是我的问题问题问题是,我返回了过滤后的字符串,但你的解决方案有效。谢谢