2010-08-06 2 views
11

내가 첨부 UISearchBar와 아주 기본적인 jQuery과가 있고, 여기UISearchBar 및 resignFirstResponder

jQuery과가 비어 무슨의 흐름이있어, 사용자는 UISearchBar는 도청 및 키보드를 제공합니다. 사용자 일단 는

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; //move the keyboard out of the way 
    //Code.... 
} 

가 잘 작동 검색 버튼을 탭하고, 길에서 키보드를 이동하고 jQuery과를 채 웁니다. 문제는 이후의 검색 시도입니다.

이전과 동일한 단계가 발생하지만 키보드는 절대로 없어지지 않습니다. 나는 응답자가되어 가고있는 느낌이 들었습니다. 실제로 발생하는 것을 이해하기 위해 약간의 명료성이 필요합니다.

답변

29

코드를 보지 않고도 추측하기 어렵습니다. 그러나 다음을 포함하면 :

[self.view endEditing:YES]; 

모든보기가 첫 번째 응답자를 종료합니다.

+0

이 나를 위해 완벽하게 작동하지 않고 작동하지 않습니다! – Raptor

+0

UITextFields가 포함 된 UICollectionView 셀과 비슷한 문제가 있었는데이 문제가 해결되었습니다. 감사합니다. – thomh

+0

'func searchBarCancelButtonClicked (searchBar : UISearchBar)'프로토콜에서 작동하지 않습니다. – jose920405

2

완벽하지는 않지만 내 경우에는 효과가있었습니다. dispatch_after

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    if (!searchText.length) { 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
      [searchBar resignFirstResponder]; 
     }); 
    } 
} 

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { 
    [self performSearchWithString:searchBar.text]; 
    [searchBar resignFirstResponder]; 
}