Я пытаюсь добавить распознаватель жестов для боковой панели. Я создал боковую панель, которая работает нормально, и я могу открыть / закрыть ее с помощью кнопки панели. Вид выдвигается с левой стороны и размещается поверх вида карт Google.
Было бы логично, если бы пользователь мог щелкнуть левой кнопкой мыши, чтобы закрыть боковую панель, но, к сожалению, он не работает.
@IBOutlet weak var sideMenuView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.isMyLocationEnabled = true
mapView.delegate = self
self.locationManager.delegate = self
self.locationManager.startUpdatingLocation()
setUpSideMenuWidth()
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swipeAction))
swipeLeft.direction = .left
self.sideMenuView.addGestureRecognizer(swipeLeft)
}
func setUpSideMenuWidth() {
self.mapView.bringSubviewToFront(self.sideMenuView)
sideMenuWidth = screenSize.width * 0.7
self.widthSideMenuConstraint.constant = sideMenuWidth
self.leadingConstraint.constant = -sideMenuWidth
self.sideMenuView.layoutIfNeeded()
}
@objc func swipeAction(swipe: UISwipeGestureRecognizer) {
menuViewAction()
}
func menuViewAction() {
if (menuShowing) {
self.leadingConstraint.constant = -sideMenuWidth
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
})
} else {
self.leadingConstraint.constant = 0
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
})
}
menuShowing = !menuShowing
}
Я как-то чувствую, что это связано с тем, что мое боковое меню является подпредставлением mapsView. Все сталкивались с такой проблемой, потому что, когда я использую просто кнопку бара, она открывается и закрывается идеально, но по какой-то причине не работает свайп. Я также попытался добавить раскадровку в виде жестов, но безуспешно.