Я создал UITabBarController с несколькими контроллерами представления.К контроллерам представления я добавил UIPanGestureRecognizer в окно UIWindow.
Это работает правильно.
Проблема: Всякий раз, когда я изменяю selectedIndex в viewWillAppear в UITabBarController (чтобы показатьпоследняя открытая вкладка), будет отображаться правильный контроллер представления, но добавленный panGestureRecognizer к окну не работает.
Когда я вручную изменяю выбранную вкладку, работает окно panGestureRecognizer.Это происходит при каждом запуске приложения.
В чем проблема?(Xcode 10.2.1, Swift 5)
Заранее спасибо!
// UITabBarController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if UserDefaults.standard.object(forKey: self.selectedTabIndexKey) != nil {
selectedIndex = UserDefaults.standard.integer(forKey: self.selectedTabIndexKey)
}
}
// ViewController2
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let appDelegate = UIApplication.shared.delegate as? AppDelegate, let window = appDelegate.window {
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
window.isUserInteractionEnabled = true
window.addGestureRecognizer(panGestureRecognizer)
}
}
@objc fileprivate func handlePan(gesture: UIPanGestureRecognizer) {
// ...
}