2013-04-08 4 views
0

사용자가 모달 대화 상자 외부를 탭하는 방법을 알고 싶습니다. 나는 이것을 시도했지만 사용자가 밖에 두 드렸을 때 호출되지 않고있다.대화 상자가 열려있을 때 모달 대화 상자 외부에서 탭 제스처를 인식하는 방법

다음은 ModalDialogViewController.m 파일에있는 내 viewDidLoad 메서드입니다. UITapGestureRecognizer * recognizer;

 if(![self.view.window.gestureRecognizers containsObject:recognizer]) 
     { 
      recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)]; 
      //[recognizer setDelegate:self]; 
      [recognizer setNumberOfTapsRequired:1]; 
      recognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view 
      [self.view.window addGestureRecognizer:recognizer]; 

     } 

handleTapBehind 메소드가 열리지 않습니다.

모달 뷰 컨트롤러에 UIGestureRecognition 프로토콜을 만들었습니다.

답변

3

늦은 여기 조금,하지만 누군가 넣다 구글의 방법으로 여기에 온다. viewDidLoad 메서드 호출 중에 뷰의 창이 nil이므로 제스처 인식기가 절대로 추가되지 않습니다.

메서드 호출을 viewDidAppear에 넣으면 예상대로 작동합니다.

0

UIGestureRecognizerDelegate를 .h 파일로 설정 했습니까?

당신은 Apple doc

사용 UIGestureRecognizers에 UIGestureRecognition의 행동의 전체 정보를 얻을 수있는 것은 매우 간단합니다. 다음 단계 만 수행하면됩니다. 제스처 인식기를 만듭니다. 제스처 인식기를 만들 때 콜백 메서드를 지정하면 제스처 인식기가 제스처가 시작, 변경 또는 종료 될 때 업데이트를 보낼 수 있습니다.

제스처 인식기를보기에 추가하십시오. 각 제스처 인식기는 하나의보기와 연관됩니다. 해당 뷰의 경계 내에서 터치가 발생하면 제스처 인식기는 찾고있는 터치 유형과 일치하는지 확인하여 일치하는 항목이 있으면 콜백 메소드에 알립니다.

프로그래밍 방식으로이 두 단계를 수행 할 수 있지만 스토리 보드 편집기로 제스처 인식기를 시각적으로 추가하는 것이 더 쉽습니다.

See Full tutorial and working here :

보기가 나타난 후 발생해야 제스처 인식기 설정 :

+0

예 .h 파일에 UIGestureRecognizerDelegate를 설정했습니다. – user1898829

관련 문제