Проблема в том, что iOS почему-то не отслеживает прозрачные представления.В итоге я добавил прозрачное представление почти , которое восстанавливает отслеживание между элементами:
let invisibleTrackingView = InvisibleTrackingView(frame: mainStackView.frame)
invisibleTrackingView.backgroundColor = UIColor.clear.withAlphaComponent(0.001)
mainStackView.addSubview(invisibleTrackingView)
class InvisibleTrackingView: UIView {
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
return false
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return nil
}
}
Значение 0,001 - это самое низкое значение, которое будет работать, и настолько низкое, что представление практически прозрачно,Поскольку представление возвращает false и nil, ОС идет вниз по цепочке представления, пока одно из них не станет совпадением.