挑战来了;我想确保进入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事件设置。解决方案的秘诀是同时查看最后一位和第一位数字,并限制长度。