私は自分の質問に対する答えを見つけました。これが最も効率的でクリーンな方法であるかどうかはわかりませんが、それが目的の効果を得るための唯一の方法でした。ここに私のソリューションです:私の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(タップは私のミニビューの中にあったかのミニビューが拡大していました) 。しかし、私が偽に戻ると、タッチが通過するようになります。このメソッドをオーバーライドしておらず、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)を返すものに応じて、それはに状態を変更します。パンジェスチャーのために.failed。基本的に、ジェスチャーをキャンセルします。 Limit UIView movement to only vertical or horizontal axis
私のパンジェスチャーは、指定された基準に従って失敗していましたが、自分のパンジェスチャーがあった場合、そのパンジェスチャーがパンになることをスクロールビューに伝える必要がありました。失敗しました。この便利なラインが入って来たところである(toFail:...を):必要と私は親ビューにパンジェスチャーを設定すると
let pan = UIPanGestureRecognizer(target: self, action: #selector(self.isPanning(pan:)))
pan.delegate = self
self.addGestureRecognizer(pan)
theScrollView.panGestureRecognizer.require(toFail: pan)
、私は基本的に(自動的に建てられたリンゴ)、スクロールビューのパンジェスチャーを語りましたカスタムパンのジェスチャーが失敗した場合は、次の行に表示する必要があります。
これは私がscrollViewでスクロールすることを可能にする解決策でしたが、他の時には私のoverlayViewをスクロールできるようになりました。私は誰かを救うことができることを願います。誰かがサンプルコードを見たいのであれば、私のサンプルプロジェクトのgithubリポジトリ(ビューの名前は異なります)を作成しました。 https://github.com/danielchangsoojones/Bumble-App-Clone/tree/master