2014-05-20 106 views
0

我試圖找出一種方法來'強制'UITextField遵循設置的方法。例如:強制UITextField將第一個字符作爲數字,第二個字符作爲字母數字

我已成功限制它只接受4個字符作爲最大值,但我需要它將4個字符的限制設置爲第一個字符「數字」第二個字符「AlphaNumeric」第三個/第四個爲「數字」例如:1Z11

我也不知道你是否可以強制大寫字母或不像你可以通過ASCII或VBA。

任何幫助將是完美的,我環顧四周,但我只能找到如何強制一個或另一個(所有數字或全部字母數字)。

最親切的問候 傑米

- 編輯單

我對人物的,因爲我上面說我只能想辦法來限制一個或另一個,所以我不代碼限制無碼輸入尚未(可以鏈接到堆棧帖子,如果你想?)。

+0

如何如何修改的問題,以顯示你如何目前限制其只能接受某些字符?即顯示代碼。 –

+0

對於大寫字母:http://stackoverflow.com/questions/2027164/iphone-force-textbox-input-to-upper-case –

+0

謝謝@GuntisTreulands爲此,這看起來像它會完美的工作。 – JamieB

回答

1

嘗試實現像這樣的委託方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if (range.location != 1) { 
     NSScanner *scanner = [NSScanner scannerWithString:string]; 
     BOOL isNumeric = [scanner scanInteger:NULL] && [scanner isAtEnd]; 
     return isNumeric; 
    }else if (range.location<4){ 
     return YES; 
    } 
    return NO; 
} 
0

請嘗試以下

NSCharacterSet *numeric = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
NSCharacterSet *alphaNumberSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet]; 


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

    //allow backspace 
     if ([characters isEqualToString:@""]) 
{ 
    return YES; 
} 
     switch (field.text.length) { 
      case 0: 
      case 2: 
      case 3: 
     { 
      BOOL retVal = ([characters rangeOfCharacterFromSet:numeric].location == NSNotFound); 
      return retVal; 
     } 
      break; 
     case 1: 
     { 
      BOOL retVal = ([characters rangeOfCharacterFromSet:alphaNumberSet].location == NSNotFound); 
      return retVal; 

     } 
     default: 
      return NO; 
      break; 
    } 

} 
相關問題