2

내부에 UIImageView imgView가있는 사용자 정의 tableviewCell이 있습니다. imgView에 UITapGestureRecognizer을 추가 했으므로 언제든지 탭할 때마다 imgView의 이미지를 변경할 수 있습니다. 그러나 imgView를 탭하면 didSelectRowAtIndexPath도 실행됩니다. 내가 원하는 것은 :셀 선택없이 서브 뷰에서 UITableViewCell 누르기

  • 것은 외부 imgView을 눌러 경우 : 트리거 didSelectRowAtIndexPath
  • imgView 내부 태핑 : 블록 didSelectRowAtIndexPath, 단지 imgView의 이미지를 변경하는 제스처 콜백 호출합니다.

imgView를 탭하면 콜백 기능이 이미 호출되었지만이 경우 didSelectRowAtIndexPath를 차단할 수 없습니다. 나는 몇 시간 동안 검색을 해왔지만 아직 해결책을 찾지 못했습니다. 나는 을 사용하고 있습니다. 누구든지 내 문제에 대해 어떤 생각을 가지고 있습니까? 모두 감사합니다!

업데이트 마지막으로 나는 내 실수가 무엇인지 알게되었습니다.

UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onFavouriteIconTapped:)]; 


tapGesture.cancelsTouchesInView = NO; // this should be YES by default 

[_ivImageView addGestureRecognizer:tapGesture]; 

그냥 cancelsTouchInView = YES으로 설정하면 문제가 해결됩니다. 값이 YES이면 터치 이벤트는 ivImageView에 의해 소비되고 셀은 선택되지 않습니다. 이것이 동일한 문제가있는 사람을 도울 수 있기를 바랍니다.

+3

UITapGesture 및 UIImageView 대신 UIButton 및 동작을 추가해보십시오. – iphonic

+1

사용중인 언어의 태그를 추가하십시오. Obj C 또는 Swift. – NSNoob

+0

이 [UIGesture 및 UITableView] (http://stackoverflow.com/questions/4604296/uigesturerecognizer-and-uitableviewcell-issue) – gurmandeep

답변

0

당신의 접근 방식은 좋습니다. 아마 UIImageView의 사용자 상호 작용을 활성화하지 않았을 수도 있기 때문에 탭 제스처 선택기가 호출되지 않을 것입니다. userInteractionEnabled의

imageView.userInteractionEnabled = TRUE;

기본값 UIImageView에 대해, NO이다.

일단 선택기가 호출되기 시작하면 imgView를 클릭하면 제스처 선택기가 호출되고 imgView 외부에서 터치하면 원하는 동작이 발생합니다. didSelectRowAtIndexPath이 호출됩니다. 이것은 iOS 리스폰 더 체인 규칙에 따른 것입니다.

+0

답변 해 주셔서 감사합니다. 하지만 내 문제는 INSIDE imgView, didSelectRowAtIndexPath도 호출하는 것입니다. 내부를 두드리는 경우 어떻게 차단합니까 (외부 imgView를 탭할 때 didSelectRowAtIndexPath를 계속 사용하십시오). – meaholik

+0

@ meaholik : 코드 스 니펫 중 일부를 공유 할 수 있습니까? – SHN

0

@SHN, 당신 말이 맞습니다. @meaholik일지도 ​​모릅니다. 그 행을 놓쳤습니다.

imageView.userInteractionEnabled = TRUE; 

또한이 link을 확인할 수 있습니다.

희망이 있으면 도움이 될 것입니다. :)

+0

답변 해 주셔서 감사합니다. 그러나 문제는 아닙니다. 내 질문을 업데이트했습니다. 그것을보십시오. – meaholik

+0

Ok @ meaholik. 저를 업데이 트 해줘서 고마워요. UIImageView에서 탭 제스처를 추가 할 코드를 제공 할 수 있습니까? –

+0

@ amir는 나를 위해 일했습니다. –