イベント通知
Swiftにおけるイベント通知のパターン
- デリゲートパターン
- クロージャ
- オブザーバーパターン
オブザーバパターン
実装方法
- 通知を受けるオブジェクトにNotification型の値を引数に持つメソッドを実装する
- NotificationCenterクラスに通知を受け取るオブジェクトを登録する
- NotificationCenterクラスに通知を投稿する
ソースコード
override func viewDidAppear(_ animated: Bool) {
//ここでUIKeyboardWillShowという名前の通知のイベントをオブザーバー登録をしている
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
//ここでUIKeyboardWillHideという名前の通知のイベントをオブザーバー登録をしている
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
}
// UIKeyboardWillShow通知を受けて、実行される関数
@objc func keyboardWillShow(notification: NSNotification) {
}
// UIKeyboardWillShow通知を受けて、実行される関数
@objc func keyboardWillHide(notification: NSNotification) {
}