для панели навигации вы можете легко проверить свойство Hide 'On Swipe
UINavigationController
. Он автоматически скрывает панель навигации при пролистывании вверх и показывает ее при пролистывании вниз.
Но для слайдера это зависит от того, как вы это реализуете.
Вы можете установить SwipeGestureRecognizer
для него и обработать скрытое свойство программно.
обновление
Вы можете использовать NSNotification
для уведомления родителей от ребенка.
Для этого вы должны объявить это так:
class childViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
swipeRight.direction = UISwipeGestureRecognizerDirection.right
self.view.addGestureRecognizer(swipeRight)
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
swipeDown.direction = UISwipeGestureRecognizerDirection.down
self.view.addGestureRecognizer(swipeDown)
}
func respondToSwipeGesture(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.right:
print("Swiped right")
case UISwipeGestureRecognizerDirection.down:
NotificationCenter.default.post(name: .swipedDown, object: nil)
case UISwipeGestureRecognizerDirection.left:
print("Swiped left")
case UISwipeGestureRecognizerDirection.up:
NotificationCenter.default.post(name: .swipedUp, object: nil)
default:
break
}
}
}
}
class ParentViewController: UIViewController {
override func viewDidLoad(){
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(childScrolledUp(notification:)), name: .swipedUp, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(childScrolledDown(notification:)), name: .swipedDown, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self, name: .swipedUp, object: nil)
NotificationCenter.default.removeObserver(self, name: .swipedDown, object: nil)
}
func childScrolledUp(notification: NSNotification) {
//hide your slider menu
}
func childScrolledDown(notification: NSNotification) {
//show your slider menu
}
}
extension Notification.Name {
static let swipedDown = Notification.Name("swipedDown")
static let swipedUp = Notification.Name("swipedUp")
}