Ios UItextfield应更改字符范围方法退格无效

Ios UItextfield应更改字符范围方法退格无效,ios,objective-c,ios8,uitextfield,uitextfielddelegate,Ios,Objective C,Ios8,Uitextfield,Uitextfielddelegate,我实现了这段代码,但在按下UITextfield中的delete按钮之前,backspace不起作用 我想用退格删除 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *myCharSet = [NSCharacterSet characterSetWi

我实现了这段代码,但在按下UITextfield中的delete按钮之前,backspace不起作用 我想用退格删除

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

    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:_demo_str];
    for (int i = 0; i < [string length]; i++) {
         unichar c = [string characterAtIndex:i];
         if ([myCharSet characterIsMember:c]) {
            return YES;
      }
    }
    return NO;
  }

试试这个代码。这对我有用吗

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

  NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:_demo_str];
  for (int i = 0; i < [string length]; i++) {
     unichar c = [string characterAtIndex:i];
     if ([myCharSet characterIsMember:c]) {
        return YES;
     }
     else
     {
         return NO;
     }
  }
   return YES;
}

试试这个代码。这对我有用吗

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

  NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:_demo_str];
  for (int i = 0; i < [string length]; i++) {
     unichar c = [string characterAtIndex:i];
     if ([myCharSet characterIsMember:c]) {
        return YES;
     }
     else
     {
         return NO;
     }
  }
   return YES;
}

当点击退格键时,字符串将是空字符串,因此您返回“否”,这意味着更改将被忽略,因此不会发生任何变化。@rmaddy,那么我如何进行更改?如果字符串为空,则返回“是”,以便执行删除操作。@rmaddy“否”,我无法执行此操作,因为我指定了一些条件,在该条件下,当点击退格键,字符串将是空字符串,因此您返回“否”,这意味着更改将被忽略,因此不会发生任何变化。@rmaddy,那么我如何进行更改?如果字符串为空,则返回“是”,以便执行删除操作。@rmaddy“否”,我无法执行此操作,因为我指定了一些条件,在这些条件下,用户只能输入从开始范围到结束范围的特定值。length在除按退格键外的其他条件下,将为1。当点击退格键时,长度可以不是1。这个答案行不通。你能给我解释一个不起作用的条件吗?我可以给你两个。1高亮显示文本字段中的一个字符,然后轻触字母。range.length为1,但未点击退格。2突出显示文本字段中的两个或多个字符,然后点击backspace。range.length不是1,但已点击退格。换句话说,range.length与是否点击退格无关。您的最新更新仍然错误。根本不需要检查range.length。而过长的if语句检查字符串应该是if!string.length.range.length在除点击退格键以外的其他条件下将为1。当点击退格键时,长度可以不是1。这个答案行不通。你能给我解释一个不起作用的条件吗?我可以给你两个。1高亮显示文本字段中的一个字符,然后轻触字母。range.length为1,但未点击退格。2突出显示文本字段中的两个或多个字符,然后点击backspace。range.length不是1,但已点击退格。换句话说,range.length与是否点击退格无关。您的最新更新仍然错误。根本不需要检查range.length。而过长的if语句检查字符串应该是if!字符串长度。