음, 나는 내 자신의 질문에 대한 대답을 알아 냈습니다. 이것이 가장 효과적이고 깨끗한 방법인지는 모르지만 원하는 효과를 얻는 유일한 방법이었습니다. 여기 내 솔루션입니다 : 내 수 있도록 OverlayView, 나는이 기본적으로보기 내가 특정 기준에 따라 userInteraction을해야하는 경우 나 말을 할 수
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
if miniView.frame.contains(point) || miniView.isOpen {
return true
}
//pass the tap onto other views
return false
}
overridded (탭 내 miniView 내부이었다 또는 miniView을 확대했다) . 그러나, 내가 거짓으로 돌아 왔을 때, 그것은 터치가지나 가게 할 것입니다. 이 메서드를 재정의하지 않고 overlayView에 userInteractionEnabled가 있으면 오버레이 뷰가 모든 터치를 그대로 사용합니다. 이 메서드를 사용하면 overlayView에 userInteractionEnabled를 유지할 수 있지만 터치가 다른 곳으로 전달되어야하는 시점을 결정할 수 있습니다.
그런 다음 parentView에 팬 제스처를 추가했습니다. 내가 parentView UIGestureRecognizerDelegate을 만들고,이 기능을 구현 :
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
//if the final page is the first page (i.e. the user only has one pic), then we don't want swiping that could interfere with the card swipe.
if let pan = gestureRecognizer as? UIPanGestureRecognizer {
let velocity = pan.velocity(in: self)
let isVertical = abs(velocity.x) < abs(velocity.y)
let isUpwards = getPanDirection(velocity: velocity) == .up
return (theBumbleScrollView.isAtFinalPage && isVertical && isUpwards) || theBumbleDetailView.isOpen
}
return true
}
이 팬 제스처를 시작하려고했을 때 나를보고 허용을, 나는 (true 또는 false)을 반환 내용에 따라, 그것의 상태를 변경하는 것 팬 제스처를 위해. 기본적으로 제스처를 취소합니다. 이것에 대한 유용한 스택 오버플로 게시물입니다 : Limit UIView movement to only vertical or horizontal axis
내 팬 제스처는 지정된 기준에 따라 실패했습니다. 내 사용자 정의 팬 제스처가 팬 일 경우 제스처가 팬에 적용될 수 있다고 scrollView에 알려야했습니다. 실패한. 내가 부모보기에 팬 제스처를 설정
let pan = UIPanGestureRecognizer(target: self, action: #selector(self.isPanning(pan:)))
pan.delegate = self
self.addGestureRecognizer(pan)
theScrollView.panGestureRecognizer.require(toFail: pan)
, 나는 기본적으로 (사과가 자동으로 내장), 스크롤 뷰의 팬 제스처를 말했다 :이 편리 라인에서 (... toFail)가 필요 온 곳이다 커스텀 팬 제스처가 실패 할 경우, 다음 라인에 있어야합니다.
그건 내가 내 scrollView에서 스크롤 할 수있는 솔루션 이었지만 다른 시간에 내 overlayView를 스크롤 할 수있었습니다. 나는 누군가를 구할 수 있기를 희망합니다. 또한 샘플 코드를보고 싶으면 내 샘플 프로젝트의 github 저장소 (보기의 이름이 다릅니다)를 만들었습니다. https://github.com/danielchangsoojones/Bumble-App-Clone/tree/master