2012-05-11 2 views
1

새 뷰 컨트롤러와 연결되는 UILabelUITapGestureRecognizer이있는 사용자 지정 UITableViewCell이 있습니다. 탭 제스처가 발생하면 segue는 작동하지만 tapGesture가 수행되는 셀에 관계없이 첫 번째 셀의 데이터 만 전달합니다. 그러나 먼저 tapGestureRecognizer 레이블 외부의 셀을 선택한 다음 탭 제스처를 수행하면 , 데이터는 성공적으로 전달됩니다. 먼저 해당 셀을 선택했습니다.UITavleViewCell 레이블의 제스처가 인식되지만 셀도 선택되지 않습니다.

어떻게 셀 선택을 인식하도록 tapGesture를 설정할 수 있습니까?

P. 나는 코드가 아닌 스토리 보드에서 제스처와 섹스를 설정합니다. 또한, 내 데이터 전달 코드는 내 prepareForSegue 메서드입니다.

+1

왜 UITapGestureRecognier를 사용하고 있습니까? UITableView가 작업을 수행하고 선택을 처리하고 상세 뷰로 푸시하는 이유는 무엇입니까? –

+0

제스처가 두 개의 서로 다른보기 컨트롤러에 대한 세그 (segue)를 인식하는 각 셀에 두 개의 레이블이 있습니다. – mnort9

+0

그 레이아웃을 정확히 알지 못하고 확신 할 수는 없지만 나쁜 생각과 매우 친숙하지 않은 느낌이 들었다. 문제를 해결하려면 tapGesture 선택기의 코드를 확인해야합니다. –

답변

4

질문에 대한 자세한 내용은 약간 밝지 만 물어볼 수 있습니다. 탭에서 셀이 선택되었을 때 코드에서 결정 했습니까?

즉. 탭이 발생할 때 발생하는 메서드에서 테이블 뷰를 쿼리하여 탭이 발생한 셀을 확인하고이를 통해 prepareForSegue 메서드에서 전달해야하는 코드를 확인할 수 있습니다.

예를 들어 아래에서이 방법을 사용하여 어떤 셀을 탭했는지 확인하고 해당 셀의 텍스트 필드에 대해 키보드를 표시합니다. 이 탭을 쉽게 적용하여 어느 셀을 탭했는지를 저장 한 다음 prepareForSegue에서 사용하여 올바른 데이터를 보낼 수 있습니다.

희망이 당신이 찾고있는 것입니다. 그래도 당신의 질문에서 꽤 말할 수 없다!

- (void) tapDetected:(UIGestureRecognizer*)sender 
{ 
    // get location of tap 
    CGPoint tapLocation = [sender locationInView:self.tableView]; 

    // Query tableview and get location of cell 
    NSIndexPath *idp = [self.tableView indexPathForRowAtPoint:tapLocation]; 

    // Now get the actual cell 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:idp]; 

    // Get handle on text field 
    UITextField *textField = (UITextField *)[cell viewWithTag:1]; 

    // Bring up keyboard for that textfield. 
    [textField becomeFirstResponder]; 


} 
관련 문제