0

나는 테이블보기가 포함 된 MGSplitView과 가로로 고정 된 UIWebView이있는 앱을 가지고 있습니다. 웹보기에는 웹보기에 첨부 된 UITapGestureRecognizer (트리플 탭용)이 있습니다. 웹보기 작업의 왼쪽 부분의 탭. 웹보기의 오른쪽에있는 탭이 손실됩니다. 동작이 트리거되지 않으며 제스처 위임 메시지가 수신되지 않습니다.잃어버린 제스처 iPad 풍경

UISplitViewController으로 전환해도 동일한 문제가 있으므로이 문제는 MGSplitViewController에 있지 않은 것으로 보입니다. 탭에서 길게 누르기로 변경하는 경우에도 동일한 결과가 나타납니다.

tap 위치는 x 좌표를 gesture.view의 최대 너비 또는 최대 너비와 비슷하게 표시되지만 화면의 중심에 가깝게 표시됩니다. 예상 한 위치는 디스플레이의 중심과 관련이 있습니다. 웹보기 내용이 명확하게 표시되고 올바르게 배치됩니다. 그래서 세로에 갇혀되고, shouldAutorotatesupportedInterfaceOrientations을 구현 관련

모든 뷰 컨트롤러는 아닌 것 같습니다 즉 MGSplitViewController, 내 UITableView 서브 클래스 (왼쪽 패널)와 오른쪽 패널 UIViewController 서브 클래스입니다.

내 제스처 인식기 위임 한 트리플 탭 (오른쪽 패널 웹보기에서보기)에서 출력 :

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
    NSLog(@"gestureRecognizer view frame: %@", NSStringFromCGRect(gestureRecognizer.view.frame)); 
    NSLog(@"location %@", NSStringFromCGPoint([gestureRecognizer locationInView:gestureRecognizer.view])); 
    return YES; 
} 

-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:] 
gestureRecognizer view frame: {{0, 0}, {703, 704}} 
location {703, -20} 
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:] 
gestureRecognizer view frame: {{0, 0}, {703, 704}} 
location {414.5, 204.5} 
-[DocumentBrowser gestureRecognizer:shouldReceiveTouch:] 
gestureRecognizer view frame: {{0, 0}, {703, 704}} 
location {414.5, 204.5} 

보고 첫 번째 위치가 이상한 것 같다.

+0

오작동하는보기는 내보기 컨트롤러보기의 수퍼 뷰인 UIViewControllerWrapperView입니다. 이런 종류의 문제에 대해 애플 프라이빗 클래스가 책임을 져야한다는 것은 조금 무리한 것 같다. –

답변

1

방향을 확인하고 크기 조정 메커니즘을 확인하십시오. 이 부분에서 뭔가 잘못되었을 때도 여러 번 보았습니다. 터치 위치를 기록하면 왼쪽에서 768 지점에 멈추는 것을 볼 수있을 것입니다. 즉, 생각한 곳에서 볼 수 있습니다. 세로 방향입니다.

+0

x = 1024에서 터치 좌표를 보았습니다 (여전히 화면의 왼쪽에서 약 730 임에도 불구하고). 오리엔테이션을 재확인 할 것입니다. –

+0

관련된 모든 뷰 컨트롤러가 shouldAutorotate 및 supportedInterfaceOrientations를 구현하므로 세로로 붙어있을 가능성이 희박합니다. –

+0

크기가 조정되지 않은 수퍼 뷰로 문제가 추적되었습니다. 클리핑되지 않았으므로 '상단'보기가 전체 너비로 표시되지만 제스처는 손실됩니다. –