1
キーボードが初めて呼び出されたときにコードが正常に動作するようです。キーボードを2回目に呼び出すと、フレームサイズは増加しません。私はカスタムキーボードの高さをチェックして、それに基づいて高さを高くするフレームのサイズを大きくする - Keyboardwillshow - Swift
@objc func keyboardWillShow(sender: NSNotification) {
let _: [NSObject : AnyObject] = sender.userInfo! as [NSObject : AnyObject]
let keyboardSize: CGSize = (sender.userInfo?[UIKeyboardFrameBeginUserInfoKey]! as AnyObject).cgRectValue.size
let offset: CGSize = (sender.userInfo?[UIKeyboardFrameEndUserInfoKey]! as AnyObject).cgRectValue.size
if keyboardSize.height == offset.height {
UIView.animate(withDuration: 0.25, delay: 0.0, options: [.allowUserInteraction], animations: {
let frame = self.view.frame
self.view.frame = CGRect(x: 0, y: self.fullView, width: frame.width, height: frame.height)
})
noteDetails.frame.size.height = noteDetails.frame.size.height + keyboardSize.height
} else {
UIView.animate(withDuration: 0.25, delay: 0.0, options: [.allowUserInteraction], animations: {
let frame = self.view.frame
self.view.frame = CGRect(x: 0, y: self.fullView, width: frame.width, height: frame.height)
})
noteDetails.frame.size.height = noteDetails.frame.size.height + keyboardSize.height - offset.height
}
}
@objc func keyboardWillHide(sender: NSNotification) {
let _: [NSObject : AnyObject] = sender.userInfo! as [NSObject : AnyObject]
let keyboardSize: CGSize = (sender.userInfo?[UIKeyboardFrameBeginUserInfoKey]! as AnyObject).cgRectValue.size
noteDetails.frame.size.height = noteDetails.frame.size.height + keyboardSize.height
}
オフセットを追加しました:
は、ここに私のコードです。私はこれがコードをクラッシュさせていると感じています。具体的には、2回目にキーボードを呼び出すと、keyboardSizeの高さがカスタムキーボードの高さになります。テーブルのフレームがキーボードの高さによって高さが増えるように、カスタムキーボードとレギュラーの両方で自分のコードを修正する方法がわかりません。
の使用
UIKeyboardFrameEndUserInfoKey
あなたは私の答えを試してみたのですか?それがうまくいくのだろうか – Steeve