2017-12-25 55 views
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の高さがカスタムキーボードの高さになります。テーブルのフレームがキーボードの高さによって高さが増えるように、カスタムキーボードとレギュラーの両方で自分のコードを修正する方法がわかりません。

+0

の使用UIKeyboardFrameEndUserInfoKeyあなたは私の答えを試してみたのですか?それがうまくいくのだろうか – Steeve

答えて

0

代わりUIKeyboardFrameBeginUserInfoKey

関連する問題