2014-05-20 3 views
0

UITextField에 설정된 방법을 '강제 적용'하는 방법을 찾으려합니다. 예 :UITextField가 첫 번째 문자를 숫자로, 두 번째 문자를 영숫자로 강제 설정

성공적으로 최대 4 자까지만 입력하도록 제한했지만 4 자 제한을 첫 번째 문자 "숫자"두 번째 문자 "AlphaNumeric"3/4를 "숫자"로 설정해야합니다. 예를 들면 다음과 같습니다. 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; 
    } 

} 
관련 문제