화면에 표시되는 하위보기 이미지 격자가 있습니다. 이것은 기본적으로 체커 보드 방식으로 화면에 배치 된 일련의 이미지입니다. 사용자가 이미지 하위 뷰 중 하나를 터치 할 때 좌표, 태그 등 하위 뷰를 검색 할 수 있도록 제스처 인식기를 추가해야합니다. 내 뷰 계층 구조는 다음과 같습니다.제스처 인식기를 일련의 하위보기에 추가하려면 어떻게해야합니까?
- 슈퍼 볼
- gridContainer보기
- 및 각 서브 뷰 - 이미지
와 사과 문서를보고 후에 내가 gridContainer보기로 제스처 인식기를 추가 할 수 있어야 것처럼 보인다 그리고 각각의 하위 뷰 - im 연령 - 제스처 인식기를 상속해야합니다. 지금까지 내가 시도한 것은 이것입니다. getter에서 격자 컨테이너보기를 alloc'ed init'ed했습니다. 또한 getter에서 제스처 인식기를 gridContainer 뷰에 추가해야하는 createGesture 메서드를 호출했습니다. 그러나 런타임에 내 action handleSingleTap 메서드를 가리키는 오류가 발생했습니다. EXC_BAD_EXCESS를 읽습니다. gridContainer 뷰 외부의 뷰가 모든 터치 이벤트에 응답하는 것을 원하지 않는다는 점도 유의해야합니다. 모든 도움을 미리 감사드립니다. 당신이 이해하기 위해 대한 추가 코드를 볼 필요가 있으면 알려 주시기 바랍니다
- (UIView *)gridContainerView
{
if (!_gridContainerView)_gridContainerView = [[UIView alloc] init];
[self createGesture];
return _gridContainerView;
}
- (void)createGesture
{
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self.gridContainerView
action:@selector(handleSingleTap:)];
singleTap.numberOfTapsRequired = 1;
[self.gridContainerView addGestureRecognizer:singleTap];
}
: 여기
내가 구현하기 위해 노력하고있어 코드입니다.편집 : handleSingleTap 방법을 포함 :
- (IBAction)handleSingleTap:(id)sender
{
CGPoint tapPoint = [sender locationInView:sender];
NSLog(@"sender = %@",sender);
NSLog(@"tappoint = %@", tapPoint);
}
그래서 UIView의 하위보기 인 맞춤 클래스를 만들어야합니까? 이 사용자 정의 클래스에 내 gridContainerView를 푸시하고 액세스가 필요할 때 내 컨트롤러에서 호출해야합니까? – Scott
하위보기가 아니라 하위 클래스입니다. – Till