2011-08-15 5 views
1

정말 이상한 문제가 있습니다. 설명하기가 어려울 수 있지만 도움이나 제안을 보내 주시면 감사하겠습니다.UIAlertView 팝업 사이의 UIGestureRecognizer 이벤트

왼쪽 및 오른쪽 제스처를 감지하는 UIGestureRecognizer가있는 기본보기 (보기 B)가 있습니다.

보기 B 위에는 전체보기를 포함하는 여러 개의 작은보기 (보기 C)가 있습니다. (달력으로 생각하면됩니다.)

각보기 C에는 탭 제스처 인식기와 길게 누르는 제스처 인식기가 있습니다. 탭 제스쳐에서 UIAlertView를 표시합니다.

그래서 여기에 문제가있다 :

내가보기 B 슬쩍 다음보기 C를 누른 수 있으며, UIAlertView를 표시하기 전에보기 B 슬쩍 이벤트가 발생합니다. 이것은 내 앱을 충돌시킵니다. 스 와이프 이벤트로 뷰 B가 제거되고 뷰 C가 뷰 B 위에 있기 때문에 뷰 B도 제거되고 alertView : clickedButtonAtIndex :에 전혀 도달하지 않기 때문입니다.

UIAlertView가 표시되기 전에 스 와이프가 발생하지 않도록하는 방법에 대한 아이디어가 있습니까? 도와 주셔서 감사합니다!

답변

1

탭 이벤트가 등록되었는지 여부를 나타내는 .h 파일에서 변수 BOOL을 변경하려고 할 수 있습니다. 탭이 등록 될 때 호출하는 메소드에서 변수를 NO으로 설정하고 스 와이프가 등록 될 때 호출하는 메소드에서 변수가 YES 또는 NO인지 확인하고 NO 인 경우 탭을 의미합니다 스 와이프 방법을 진행해서는 안됩니다. 그런 다음 UIAlertView이 사임 된 후 변수를 YES으로 설정하면됩니다. 희망이 도움이됩니다!

1

위에서 말한 것처럼 C 뷰는 B 뷰를 완전히 덮습니다. 따라서 경고가 표시되지 않으면 B의 스 와이프 제스처는 등록되지 않아야합니다. (void)didPresentAlertView:(UIAlertView *)alertView;에 B의 제스처 인식기를 추가 할 수 있습니다.

그리고 alertView:clickedButtonAtIndex:에서 B의 제스처 인식기를 제거 할 수 있습니다.

HTH,

하기 Akshay