キーボードの高さの取得について、分からない部分があり、質問させて貰いました。
以下は、該当のコードとなります。(コードの方は一部抜粋となります。)
override func viewWillAppear(_ animated: Bool) { override func viewDidLoad() { super.viewDidLoad() commentTextField.delegate = self //キーボード NotificationCenter.default.addObserver(self, selector: #selector(EditAndPostViewController.keyboardWillShow(_ :)), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(EditAndPostViewController.keyboardWillHide(_ :)), name: UIResponder.keyboardWillHideNotification, object: nil) //アプリ内に保存されているデータを呼び出して、 //パーツに反映していく if UserDefaults.standard.object(forKey: "userName") != nil { userName = UserDefaults.standard.object(forKey: "userName") as! String } if UserDefaults.standard.object(forKey: "userImage") != nil { userImageData = UserDefaults.standard.object(forKey: "userImage") as! Data userImage = UIImage(data: userImageData)! } userProfileImageView.image = userImage userNameLabel.text = userName contentImageView.image = passedImage // Do any additional setup after loading the view. } @objc func keyboardWillShow(_ notification:NSNotification){ let keyboardHeight = ((notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as Any) as AnyObject).cgRectValue.height commentTextField.frame.origin.y = screenSize.height - keyboardHeight - commentTextField.frame.height sendButton.frame.origin.y = screenSize.height - keyboardHeight - sendButton.frame.height } @objc func keyboardWillHide(_ notification:NSNotification){ commentTextField.frame.origin.y = screenSize.height - commentTextField.frame.height sendButton.frame.origin.y = screenSize.height - sendButton.frame.height 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: 0) self.view.transform = transform } }
keyboardWillShow
関数内で、キーボードの高さを取得するため、以下のような記載がありますが、何故キーボードの高さを取得するのに、notification.userInfo
が必要なのかなと疑問です。
let keyboardHeight = ((notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as Any) as AnyObject).cgRectValue.height
こちらの部分につきまして、どなたかご助言頂けましたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/01 23:45 編集
2020/01/04 19:33 編集
2020/01/05 01:36
2020/01/05 04:39 編集