У меня есть 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.
Как правильно добиться этого?