UITextView字段验证挑战



挑战来了;我想确保进入UItextview的数字是65535[短]或更少。我可以将最上面的数字限制为

一个[NSCharacterSet characterSetWithCharactersInString: @"123456"),

但是我需要更聪明一些,因为下一个数字可以是65以内的任何数字;但我不能简单地使用ncharacter set,可以吗?

你是怎么想的?

Ok,找到了一个简单的解决方案;我喜欢简单。使用这个调用&这段代码。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.accessibilityIdentifier isEqualToString:@"minor"]) {
  if (newLength == 0) {
    minorMaxColumns = 5;
  }         
  if (newLength == 2) {
    if ([string integerValue] >= 6) {
      minorMaxColumns = 4;
    }
  }
  if (newLength == 3) {
    if ([textField.text integerValue] >= 65) {
       if  ([string integerValue] >= 5) {
         minorMaxColumns = 4;
       }
     }
  }
  if ([self isiBeaconMajorMinor:string]  && (newLength <= minorMaxColumns)) {
    return YES;
  }
return NO;
}
-(BOOL)isiBeaconMajorMinor:(NSString*)inputString{
    BOOL isValid = NO;
    NS CharacterSet *alphaNumbersSet = [NSCharacterSet      decimalDigitCharacterSet];
    NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:inputString];
    isValid = [alphaNumbersSet isSupersetOfSet:stringSet];
   return isValid;
}

不完全给你65535,它只给你65499;但这已经足够接近了。当然欢迎你提出更好的解决方案。变量"minorMaxColumns"也由Editing Did Begin事件设置。解决方案的秘诀是同时查看最后一位和第一位数字,并限制长度。

最新更新