Notificationについて、学習していたのですが、疑問点があり、質問させて貰いました。
// MARK: - ライフサイクル override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) configureObserver() //Notification発行 } // MARK: - Notification /// Notification発行 func configureObserver() { let notification = NotificationCenter.default notification.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil) notification.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil) print("Notificationを発行") } /// キーボードが表示時に画面をずらす。 @objc func keyboardWillShow(_ notification: Notification?) { guard let rect = (notification?.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue, let duration = notification?.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval else { return } UIView.animate(withDuration: duration) { let transform = CGAffineTransform(translationX: 0, y: -(rect.size.height)) self.view.transform = transform } print("keyboardWillShowを実行") } /// キーボードが降りたら画面を戻す @objc func keyboardWillHide(_ notification: Notification?) { guard let duration = notification?.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as? TimeInterval else { return } UIView.animate(withDuration: duration) { self.view.transform = CGAffineTransform.identity } print("keyboardWillHideを実行") }
こちらは、リンク先に提示されていたコードなのですが、以下の部分でguard文が使用されています。何故guard文が必要なのかが分かりません...
guard文を使わない場合デメリットがあるのでしょうか?
guard let rect = (notification?.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue, let duration = notification?.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval else { return }
どなたか、ご教授頂けましたら幸いです
回答1件
あなたの回答
tips
プレビュー