2012-01-07 1 views
1

하위 뷰 (UIImageView)가 기본보기에 추가되었습니다. 하위보기에서만 탭을 감지하고 'processTap'메소드를 실행하려고합니다.하위 뷰 Gesturerecognizer에서 오류가 발생합니다.

클릭이 감지되면 다음과 같은 예외가 발생합니다.

: - :

뭔가가 @selector 부분과 잘못된 것 같다 "NSInvalidArgumentException ', 이유는'[UIImageView에 processTap] 인식 할 수없는 선택기 인스턴스로 전송".

아이디어가 있으십니까?

- (void)viewDidLoad 
{ 
    // Create a uiimage view, load image 
    UIImageView *tapView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tap zone.png"]]; 
    tapView.frame = CGRectMake(20, 50, 279, 298); 
    tapView.userInteractionEnabled = YES; 

    [self.view addSubview:tapView]; 

    // Initialize tap gesture recognizers 
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:tapView 
            action:@selector(processTap)]; 
    singleTap.numberOfTapsRequired = 1; 

    [tapView addGestureRecognizer:singleTap]; 

    [super viewDidLoad]; 
} 

- (void)processTap { 
    if (sessionRunning) { 
     tapCounter = tapCounter + 1; 
     _tapCount.text = [NSString stringWithFormat:@"%i",tapCounter]; 
    } 
}' 

답변

3

인식기의 대상은 self이어야합니다. 당신의 tapView이되지 않은 선택이 processTap라고 때문에

// Initialize tap gesture recognizers 
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(processTap)]; 

당신은 이전 오류가 있습니다.

참고 애플의 문서에서

:

대상

는 제스처를 인식하는 수신기가 전송 액션 메시지의 수신자 인 객체입니다. nil은 유효한 값이 아닙니다.

따라서이 경우받는 사람은 processTap 선택기를 구현하는 컨트롤러입니다.