0

这是挑战;我想确保输入到 UItextview 中的数字是 65535 [a short] 或更少。我可以将最高位限制为

一个[NSCharacterSet characterSetWithCharactersInString:@"123456"];

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

你觉得呢?你有没有什么想法?

4

1 回答 1

0

好的,找到了一种很简单的解决方案;我喜欢简单。使用了这个电话和这个代码。

- (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 Event 设置。查看最后一位和第一位并限制长度的解决方案的秘诀。

于 2015-05-19T04:23:18.410 回答