2017-12-25 9 views
1

처음으로 키보드를 호출하면 코드가 완벽하게 작동하는 것 같습니다. 키보드를 두 번째로 호출하면 프레임 크기가 증가하지 않습니다. 나는 사용자 정의 키보드 높이를 확인하고 그에 따라 높이를 증가프레임 크기 증가 - 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 

} 

오프셋 추가 된 :

여기 내 코드입니다. 이것이 코드를 충돌시키는 원인이되었습니다. 구체적으로 키보드를 두 번째 호출 할 때 keyboardSize의 높이는 사용자 정의 키보드의 높이 여야합니다. 테이블의 프레임 높이가 키보드의 높이만큼 커지도록 내 코드를 수정하는 방법을 잘 모르겠다.

+0

UIKeyboardFrameBeginUserInfoKey의 당신은 내 대답을 시도 했습니까? 그것이 작동하는지 궁금해. – Steeve

답변

0

사용 UIKeyboardFrameEndUserInfoKey 대신