2012-07-30 4 views
6

Google 및 Stackoverflow에서 수 시간 동안 검색했지만 시도했지만 운이 없었습니다.UITapGestureRecognizer에서 didSelectRowAtIndexPath 메서드를 호출하는 방법은 무엇입니까?

위의 UITableView tblDepartment과 위의 UISearchBar studentSearch이 있습니다.

나는 사용자가 검색 상자 외부를 눌러 때 studentSearch 텍스트 상자에서 키보드를 기각 할 UITapGestureRecognizer를 추가 : 나는 tblDepartment에 행을 선택할 때

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
[self.tblDepartment addGestureRecognizer:gestureRecognizer]; 

- (void)hideKeyboard 
{ 
    [studentSearch resignFirstResponder]; 
} 

그 후, 방법 didSelectRowAtIndexPath:(NSIndexPath *)indexPath 더 이상 호출되지 않습니다. 나는 gestureRecognizer이 이유 인 것을 안다.

키보드를 숨기고 사용자가 행을 선택하도록 허용하려면 어떻게해야합니까?

는이 코드를 시도했지만 작동하지 않았다 :

, 그것은 기본적으로 YES NO의 제스처 인식기 cancelsTouchesInView 속성
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isDescendantOfView:tblDepartment]) { 
     return NO; 
    } 
    return YES; 
} 
+0

제스처 인식기를 제거하고 대신 'tableView : didSelectRowAtIndexPath :'에서 첫 번째 응답을 종료 할 수 있습니까? – dasblinkenlight

+1

'resignFirstResponder' 후 제스처 인식기를 제거해보십시오. – ohr

+0

@ dasblinkenlight : 의견을 주셔서 감사합니다. 'tblDepartment'는 약 7 개의 행을 가지며 표시 할 때 키보드가 겹칩니다. 사용자가 검색하고 싶지 않으면 행을 선택할 수 있기를 바랍니다. :) 그래서 검색 상자 바깥을 탭하면 키보드가 닫히고 하단 행을 선택할 수 있습니다. –

답변

14

의 세트는 GR는 제스처를 인식하는 경우 기본 뷰에 도달 접촉을 방지 .

+1

훌륭한 솔루션입니다. 고맙습니다. '[gestureRecognizer setCancelsTouchesInView : NO];'작동합니다! –

+0

정말 고맙습니다. 시간을 절약 해주었습니다 :) tap.cancelsTouchesInView = NO; –

관련 문제