2011-04-29 3 views
0

UITextField에 한 단어 만 입력하도록 허용 할 수 있습니까? 그렇다면 어떻게? , disallowedCharacters 키보드에 의해 허용되지 않아야 문자를 포함하는 NSCharacterSet입니다사용자가 UITextField에 한 단어 만 입력하도록 제한하십시오.

- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)textEntered 
{ 
    for (int i = 0; i < [textEntered length]; i++) 
    { 
     unichar c = [textEntered characterAtIndex:i]; 
     if ([disallowedCharacters characterIsMember:c]) 
     { 
      return NO; 
     } 
    } 
    return YES; 
} 

:

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

_disallowedCharacters = [NSCharacterSet whitespaceCharacterSet]; 

for(int i = 0; i < [_searchBox.text length]; i++){ 
    unichar c = [_searchBox.text characterAtIndex:i]; 
    if (![_disallowedCharacters characterIsMember:c]) 
    { 
     return NO; 
    } 
} 
return YES; 
} 
+0

"한 단어"는 무엇을 의미합니까? 일부 언어에서는 공간이 단어 분리 기호가 아닙니다. –

답변

4

UITextFieldDelegate 프로토콜을 사용

는 여기에 내가 사용하고 현재 코드입니다 예 : 공백, 구두점, 숫자 등 :

self.disallowedCharacters = [NSCharacterSet characterSetWithCharactersInString:@" ,.123"]; 
+0

감사합니다. 어떻게이 characterSet을 정의하겠습니까? – locoboy

+0

@ cfarm54 : 게시 한 두 번째 코드 샘플을 참조하십시오. 헤더 파일에서 인스턴스 변수를 일치하도록 선언하십시오. '@ property'와'@ synthesize' 한 후'viewDidLoad' 또는 무엇인가에 정의하십시오. –

+0

@Evan interesting. 이 코드는 하나의 문자 만 입력 할 수 있도록 허용합니다. 한 단어 만 입력하고 싶습니다. – locoboy

2
당신이 공백과 줄 바꿈 이외의 문자에 대해 점검하십시오 mutableCopy를 작성하고 당신이 원하는대로 추가 할 경우 공백과 줄 바꿈에 대한 검사 (에반의 대답) 문자 집합의

, 당신은

self.disallowedCharacters = [NSCharacterSet whitespaceAndNewlineCharacterSet]; 

을 사용할 수 있습니다 그것은 :

NSMutableCharacterSet *set = [[NSCharacterSet whitespaceAndNewlineCharacterSet] mutableCopy]; 
[set formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; 
[set formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]; 
[set addCharactersInString:@"whatever you want"]; 
... 
self.disallowedCharacters = [[set copy] autorelease]; 
[set release]; 

NSCharacterSet docs는 사용할 수있는 문자 집합의 좋은 개요를 가지고있다.

+0

이것이 작동해야하는 것처럼 보입니다.하지만 입력을 중지하기 전에 한 글자 만 입력 할 수 있습니다. 왜 이런 일이 일어날 까? – locoboy

+0

evan의 의견을 참조하십시오. 반환 값이 서로 바뀝니다. – kevboh

관련 문제