NotificationCenter란?
- 어떠한 행동을 할 때 알림을 받을 수 있는 기능
예) 키보드가 올라올 때, 키보드가 내려갈 때
특징
- 1 : N
- 객체 - 등록을 하면, 신호를 받을 수 있음
- 동시에 이벤트 발송 가능
- 리턴값의 개념 없음
NotificationCenter 등록
func setupNotification() {
// 노티피케이션의 등록 ⭐️
// (OS차원에서 어떤 노티피케이션이 발생하는지 이미 정해져 있음)
NotificationCenter.default.addObserver(self, selector: #selector(moveUpAction), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(moveDownAction), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func moveUpAction() {
stackViewTopConstraint.constant = -20
UIView.animate(withDuration: 0.2) {
self.layoutIfNeeded()
}
}
@objc func moveDownAction() {
stackViewTopConstraint.constant = 10
UIView.animate(withDuration: 0.2) {
self.layoutIfNeeded()
}
}
NotificationCenter 해제
- 해제하지 않으면 계속 등록되어 있을 수 있기 때문에 등록 해제해 주어야 함
deinit {
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
}