두 개의 UIPageViewController가 하나씩 있고 둘 다 가로 스크롤이 있습니다. 모든 사용자 정보가 포함 된 하나의 전체 화면,이 사용자의 다른 사진 갤러리. 동작 : 모든 사용자 사진을 스 와이프하면 전체 화면이 스 와이프됩니다. 하지만 때로는 사진을 스 와이프 할 수 없으며이 제스처가 차단 된 것처럼 보이며 첫 번째 호출기 만 스 와이프합니다. 하지만 내가 다시 스 와이프 제스처를하면 차단 해제됩니다. 여기에 대한 비디오, 내가 무슨 말을하는지 : https://youtu.be/Hr7tDKNv15A 내가 그것을 일으키는 오류를 찾을 수 있도록 도와주세요, 지금은 어떻게 그것을 디버깅해야 상상할 수 없습니다.2 UIPageViewController 제스처 충돌
내부 호출기를 저장하는 컨테이너보기의 오버라이드 그러나 hitTest :
내가 사진을 터치하면, 내 출력의override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
if pointInside(point, withEvent: event) {
print("Inside")
print("Self view:\(self)")
print("Self subviewsview:\(self.subviews)")
print("Self subviewsview of subview:\(self.subviews[0].subviews)")
return self.subviews[0].subviews[0]
} else {
print("Outside")
return nil
}
}
:
Inside
Self view:<armeniaApp.debugGesture: 0x7f7f8be46e60; frame = (0 0; 400 400); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7f7f8be1e7c0>>
Self subviewsview:[<_UIPageViewControllerContentView: 0x7f7f8be920a0; frame = (0 0; 400 400); clipsToBounds = YES; opaque = NO; autoresize = W+H; layer = <CALayer: 0x7f7f89ff1e00>>]
Self subviewsview of subview:[<_UIQueuingScrollView: 0x7f7f8a836e00; frame = (0 0; 400 400); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7f7f8be81db0>; layer = <CALayer: 0x7f7f8be522b0>; contentOffset: {400, 0}; contentSize: {1200, 400}>]
그래서 내가 UIQueuingScrollView
에 저장하지만, 무엇을 필요로하는 제스처 전 다음에해야합니까? return self.subviews[0].subviews[0]
도움이되지 않습니다
위젯에 액세스 할 수 없기 때문에 위임 메서드가 호출되지 않습니다. C 어떤 곳에서도 gestureRecognizer 배열이 비어 있다고합니다 (모든 아이디어? –
) 죄송합니다. 문서에서이 항목을 발견했습니다. "전환 스타일 만 채워집니다 'UIPageViewControllerTransitionStylePageCurl' " –
당신은'hitTest :'를 오버라이드 할 수 있고 더 스크롤 할 때 내부 페이지 뷰 콘트롤러 내부로 전달되도록 할 수 있습니다. 그러나 그 외 모든 것은 외부 페이지 뷰 콘트롤러로 전달됩니다. –