Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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 - Fatal编程技术网

Ios 避免使用符号,我指定的符号除外

Ios 避免使用符号,我指定的符号除外,ios,objective-c,Ios,Objective C,可能重复:NSString中的独立数字显示电话号码 目标: 我只允许用户在文本字段中键入符号和数字。 如果用户类型不是我指定的,则以编程方式将其删除, 之后我会向用户发出警报 我怎么做?请回答哪些成员/财产/代表/接口有助于实现这些目标。 发送整个代码的次数超过。有一个名为UITextFieldDelegate的UITextField委托 实施该方法: -(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSSt

可能重复:NSString中的独立数字显示电话号码

目标:

  • 我只允许用户在文本字段中键入符号和数字。 如果用户类型不是我指定的,则以编程方式将其删除, 之后我会向用户发出警报
我怎么做?请回答哪些成员/财产/代表/接口有助于实现这些目标。
发送整个代码的次数超过。

有一个名为UITextFieldDelegate的UITextField委托

实施该方法:

-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串

如果
string
包含无效字符,则返回NO,并向用户发出警报

如何判断
字符串中是否存在无效字符,下面是一个示例

NSCharacterSet * invalidCharacters = [NSCharacterSet characterSetWithCharactersInString:@"+-1234567890"] ;
invalidCharacters = [invalidCharacters invertedSet] ;
NSRange r = [searchString rangeOfCharacterFromSet:invalidCharacters] ;
if (r.location == NSNotFound) {
    // there isn't invalid character
} else {
    // there is
}

UITextField有一个名为UITextFieldDelegate的委托

实施该方法:

-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串

如果
string
包含无效字符,则返回NO,并向用户发出警报

如何判断
字符串中是否存在无效字符,下面是一个示例

NSCharacterSet * invalidCharacters = [NSCharacterSet characterSetWithCharactersInString:@"+-1234567890"] ;
invalidCharacters = [invalidCharacters invertedSet] ;
NSRange r = [searchString rangeOfCharacterFromSet:invalidCharacters] ;
if (r.location == NSNotFound) {
    // there isn't invalid character
} else {
    // there is
}
  • (BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
在字符串中,您将根据它找到字符,您可以随时显示所需内容。

  • (BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串

在字符串中,您将根据它找到字符,您可以显示您想要的任何内容。

您可以使用
NSCharacterSet
在textField
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串的一个代理中使用以下代码:-

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

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789-,+"] invertedSet];

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


    NSLog(@"%@",filtered);

  if(filtered.length>0)
  {
      //do your stuff
  }
  else
  {
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Not allowed" message:@"You Enter not allowd charactore" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alert show];

  }
    return [string isEqualToString:filtered];
}


NSCharacterSet*cs=[[NSCharacterSet characterSetWithCharactersInString:@“0123456789*#“]inversedset]用户只能在文本文件中输入提及字符0123456789-,+

您可以使用
NSCharacterSet
在文本文件
-(BOOL)textField:(UITextField*)textField应更改charactersinrange:(NSRange)range replacementString:(NSString*)string
的一个代表中使用以下代码:-

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

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789-,+"] invertedSet];

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


    NSLog(@"%@",filtered);

  if(filtered.length>0)
  {
      //do your stuff
  }
  else
  {
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Not allowed" message:@"You Enter not allowd charactore" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alert show];

  }
    return [string isEqualToString:filtered];
}


NSCharacterSet*cs=[[NSCharacterSet characterSetWithCharactersInString:@“0123456789*#“]inversedset]用户只能在文本字段中输入提及字符0123456789-,+

将数字设置为

#define NUMBERS @"0123456789+-"
然后在文本字段的委托函数中

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
            NSCharacterSet *cs;
            NSString *filtered;
            cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
            filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
            return [string isEqualToString:filtered];"
}

我希望它对您有用

将数字设置为

#define NUMBERS @"0123456789+-"
然后在文本字段的委托函数中

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
            NSCharacterSet *cs;
            NSString *filtered;
            cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
            filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
            return [string isEqualToString:filtered];"
}

我希望它对你有用

这难道不应该是这样的吗:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField.tag == 3)
    {

        NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."]; //This allows user type in only numbers and - +
        for (int i = 0; i < [string length]; i++)
        {
            unichar c = [string characterAtIndex:i];
            if (![myCharSet characterIsMember:c]) //Here, it checks if the entered character is in the characterSet, if it's not, it wouldn't allow the user go ahead.
            {
                return NO; //Restrict the user from entering other characters
            }
        }

        return YES; //Allow the user enter the characters specified above
    }

    return YES; 
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
如果(textField.tag==3)
{
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789.”;//这允许用户仅键入数字和-+
对于(int i=0;i<[字符串长度];i++)
{
unichar c=[string characterAtIndex:i];
如果(![myCharSet CharacterizeMember:c])//这里,它会检查输入的字符是否在字符集中,如果不在,它将不允许用户继续。
{
返回否;//限制用户输入其他字符
}
}
返回YES;//允许用户输入上面指定的字符
}
返回YES;
}

这不应该是这样的吗:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField.tag == 3)
    {

        NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."]; //This allows user type in only numbers and - +
        for (int i = 0; i < [string length]; i++)
        {
            unichar c = [string characterAtIndex:i];
            if (![myCharSet characterIsMember:c]) //Here, it checks if the entered character is in the characterSet, if it's not, it wouldn't allow the user go ahead.
            {
                return NO; //Restrict the user from entering other characters
            }
        }

        return YES; //Allow the user enter the characters specified above
    }

    return YES; 
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
如果(textField.tag==3)
{
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789.”;//这允许用户仅键入数字和-+
对于(int i=0;i<[字符串长度];i++)
{
unichar c=[string characterAtIndex:i];
如果(![myCharSet CharacterizeMember:c])//这里,它会检查输入的字符是否在字符集中,如果不在,它将不允许用户继续。
{
返回否;//限制用户输入其他字符
}
}
返回YES;//允许用户输入上面指定的字符
}
返回YES;
}

Ok。您说过要使用此委托并使用逻辑运算符查找有效字符。但我听说,有很多动态的方法可以避免符号。角色集。你还有其他想法吗?好的。您说过要使用此委托并使用逻辑运算符查找有效字符。但我听说,有很多动态的方法可以避免符号。角色集。你还有别的想法吗?我试试看。“invertedSet”的用法是什么。invertedSet:返回一个字符集,该字符集只包含接收器中不存在的字符。我将尝试。“invertedSet”的用法是什么?invertedSet:返回一个字符集,该字符集只包含接收器中不存在的字符。@GenieWanted-Friend:发生了什么事。删除“!”根据我的目标,处于“如果”状态。@UdanPirappu-நண்பா, 正在删除该文件!将导致用户也键入字母。。您只想输入数字和-+符号。正确吗?@GenieWanted-நண்பா, 您的代码只允许键入字母。请查查那个朋友(நண்பா).நண்பா, 您是否运行了上述代码并尝试输入了一些值?它对我的效果与预期一样。请