2015-05-17 33 views
0

以下是挑戰;我想確保輸入到UItextview的數字是65535 [小]或更少。我可以限制頂部數字爲UITextView字段驗證質詢

an [NSCharacterSet characterSetWithCharactersInString:@「123456」];

但我需要變得更聰明,導致下一個數字可以是任何數字最多65;但我不能簡單地使用NSCharacterSet,或者我可以嗎?

你的想法是什麼?

回答

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事件設置。解決方案的祕訣在於查看最後一位數字和第一位數字,並限制長度。