2012-07-30 5 views
0

UISearchBar에서 이상한 동작이 나타납니다. UISearchBar에서 더 많은 공간을 누르면 자동으로 ""멈 춥니 다. " 검색 창 텍스트 나는 이것이 왜 일어나고 있는지 이해하지 못한다. 여기에 내 코드,UISearchBar가 두 개 이상의 공백을 추가 한 후 전체 정지합니다.

NSString *str = [searchBar.text stringByTrimmingCharactersInSet: 
       [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 


NSLog(@"%@",searchBar.text); 

가 나는 공간과 다음 F 후 2 번 공간을 누르면하고 마침표를 넣습니다. 도와주세요. 미리 감사드립니다.

답변

2

이것은 UISearchBar 요소가 아닌 iOS의 속성입니다.

" ''로 구성 할 수 있습니다. iOS의 설정 부분에있는 일반 -> 키보드에서 "바로 가기"를 선택하십시오. 설명입니다 : "스페이스 바를 두 번 누르면 마침표 뒤에 공백이 삽입됩니다."

프로그래밍 방식으로 마침표/전체 정지를 제거하는 방법에 대해서는 정규식을 사용하여 프로그래밍 할 수 있지만 권장하지는 않습니다. 이 기능은 키보드의 사용자 기본 설정의 일부이므로 사용중인 응용 프로그램에 관계없이 동일한 기능을 수행합니다. 그것은 사용자가 대문자로 입력하는 모든 텍스트를 변경하는 것과 비슷합니다. 그런 식으로는 원하지 않을 수도 있습니다 (또는 탭핑을 두 번 누르는 데 사용될 수도 있습니다). 따라서 앱이 혼란스럽고 사용하기 어려워집니다.

저는 그대로 두겠습니다.

+0

전체 중지를 원하지 않기 때문에 어떻게 변경할 수 있습니까? – fibnochi

+0

귀하의 대답은 정확합니다 어떻게 말해 줄 수 programatically이 전체 종아리를 제거합니다. – fibnochi

+0

나는 이것이 사용자의 구성이므로 가능한 것으로 생각하지 않습니다. 그들은 어디서나 활성화 할 것을 선택합니다. 따라서 모든 앱에서 동작이 동일합니다. – rdurand

1

당신이 정말로 전체 정류장의 자동 추가를 제거하려면, UISearchBar를 들어

당신이 덮어 쓸 수 있습니다, 당신은 동일한 작업을 수행하지만, 대신 다음을 덮어 쓸 수의 UITextField를 들어

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 

    if ([text isEqualToString:@". "]) { 
     return NO; 
    } 
} 

,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 
+0

이 나를 위해 일합니다. – bittu

관련 문제