Приоритет UIPanGestureRecognizer между подпредставлениями - PullRequest
0 голосов
/ 05 октября 2018

У меня есть 3 подпредставления в моем UIView, каждое из которых имеет настройку UIPanGestureRecognizer.Я увеличил область касания каждого из этих представлений путем создания подкласса UIView и переопределения функций hitTest и point inside:

 let x = CGFloat(30)
 let y = CGFloat(30)

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
    let hitFrame = bounds.insetBy(dx: -x, dy: -y)
    return hitFrame.contains(point) ? self : nil
}

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
    let hitTestEdgeInsets = UIEdgeInsets(top: -x, left: -x, bottom: -x, right: -y)
    let hitFrame = bounds.inset(by: hitTestEdgeInsets) 

    return hitFrame.contains(point)
}

Проблема заключается в том, что представления перекрываются или если они находятся слишком близко, я хочуустановить приоритет в зависимости от направления панорамирования.Так что если view1 и view2 перекрываются (или достаточно близки для hitTest) и направление панорамирования оставлено, я хочу панорамировать на view1.Если направление панорамирования правильное, я хочу панорамировать на view2.

Как правильно добиться этого?

...