2013-02-06 2 views
1

실행 코드가 searchBarCancelButtonClicked:입니다. 사용자가 검색 표시 줄에서 벗어날 때 취소가 반드시 클릭되지는 않지만 클릭 할 때 동일한 코드를 실행하려고합니다. 내 현재 코드는 아래에 있지만 알아낼 수없는 문제가 있습니다. 검색 막대 아래에 UIView를 배치하면 클릭하면 원하는대로 작동하는 메서드가 실행됩니다.UISearchBar 닫기

문제는 검색 창을 활성화하면 uisearchbar와 연결된 반투명보기가 내보기 상단에 표시되고보기를 클릭해도 검색 창을 닫을 수 있지만 내 방법은 실행되지 않습니다. 검색 창을 닫은 후에보기를 클릭하면 내 방법이 실행되므로 알았습니다. 기본적으로 검색 표시 줄이 첫 번째 응답자 인 동안보기 제스처를 활성화 할 수 있어야합니다. 난 당신이 아마 searchBarShouldEndEditing: 또는 searchBarTextDidEndEditing: 위임 방법을 사용할 수 있습니다 생각

- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { 
    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissSearch:)]; 
    UIView *transparentView = [[UIView alloc]initWithFrame:transparentViewRect]; 
    [transparentView setBackgroundColor:[UIColor blackColor]]; 
    [transparentView addGestureRecognizer:singleTap]; 
    [self.view addSubview:transparentView]; 
    [self.view bringSubviewToFront:transparentView]; 

    return YES; 

} 

- (void) dismissSearch:(UITapGestureRecognizer *)tapGesture 
{ 
    //Run my code 
} 
+0

검색 필드에 포커스가있을 때 알림을 받으려고합니까? 아마도 더 좋은 방법이있을 것입니다 ... – nielsbot

+0

검색 창에 포커스가있을 때 알림을 받고 싶습니다. – JeffN

+0

'searchBarShouldEndEditing :'/'searchBarTextDidEndEditing :'delegate 메소드를 사용할 수 없습니까? – nielsbot

답변

2

(검색 결과에 UITablewView에서 셀 탭 때), searchBarShouldEndEditing: or searchBarTextDidEndEditing: 방법에이 조건을 사용

+0

UITableView 결과 검색의 셀을 탭하면 검색 표시 줄도 숨겨지고 기본보기로 돌아갈 수 있습니까? Apple 문서를 따르십시오.이 메서드는'UISearchDisplayDelegate'에서 작동하지만 .. 작동하지 않아야합니다. "검색 UI를 시작하거나 끝낼 때" searchDisplayControllerDidBeginSearch :/searchDisplayControllerDidEndSearch : – seufagner

+0

검색 결과 셀을 탭하면 자동으로 실행되지 않도록 조치를 취해야합니다. – nielsbot

0

언급 한 문제를 해결하기 :

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar 
{ 
    if (self.searchDisplayController.searchResultsTableView.hidden) { 
     self.searchBar.hidden = true; 
    } 

    return true; 
}