[swift] IQKeyboardManager를 사용해서 키보드의 높이 변경 애니메이션을 커스텀할 수 있나요?

IQKeyboardManager를 설치하고 설정한 후, 다음과 같이 키보드 높이 변경 애니메이션을 커스텀할 수 있습니다.

  1. AppDelegate.swift 파일에서 didFinishLaunchingWithOptions 메서드 내에 다음 코드를 추가합니다.
IQKeyboardManager.shared.enable = true
  1. 사용자 정의 뷰 컨트롤러에 다음 속성을 추가합니다.
var keyboardHeight: CGFloat = 0
  1. IQKeyboardManager의 keyboardWillChangeFrameNotification을 관찰하여 키보드의 프레임 변경 시 호출되는 메서드를 구현합니다. 이 메서드에서 키보드 높이 변경 애니메이션을 처리합니다.
@objc func handleKeyboardNotification(_ notification: Notification) {
    if let userInfo = notification.userInfo {
        let endFrame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
        let duration: TimeInterval = (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber)?.doubleValue ?? 0

        if let endFrame = endFrame {
            let keyboardVisibleHeight = UIScreen.main.bounds.height - endFrame.origin.y

            if keyboardHeight == 0 && keyboardVisibleHeight > 0 {
                // 키보드가 나타날 때 애니메이션 수행
                UIView.animate(withDuration: duration) {
                    // 키보드가 나타날 때 수행할 애니메이션 코드
                }
            } else if keyboardHeight > 0 && keyboardVisibleHeight == 0 {
                // 키보드가 사라질 때 애니메이션 수행
                UIView.animate(withDuration: duration) {
                    // 키보드가 사라질 때 수행할 애니메이션 코드
                }
            }

            keyboardHeight = keyboardVisibleHeight
        }
    }
}
  1. 해당 뷰 컨트롤러의 viewWillAppear 메서드에서 keyboardWillChangeFrameNotification을 등록합니다.
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardNotification(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}

이제 IQKeyboardManager를 사용하여 키보드 높이 변경 애니메이션을 커스텀할 수 있습니다. 필요에 따라 애니메이션 코드를 추가하고, 키보드 높이를 사용하거나 조작할 수 있습니다.