[swift] IQKeyboardManager를 사용해서 키보드의 높이 변경 애니메이션을 커스텀할 수 있나요?
IQKeyboardManager를 설치하고 설정한 후, 다음과 같이 키보드 높이 변경 애니메이션을 커스텀할 수 있습니다.
- AppDelegate.swift 파일에서
didFinishLaunchingWithOptions
메서드 내에 다음 코드를 추가합니다.
IQKeyboardManager.shared.enable = true
- 사용자 정의 뷰 컨트롤러에 다음 속성을 추가합니다.
var keyboardHeight: CGFloat = 0
- 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
}
}
}
- 해당 뷰 컨트롤러의
viewWillAppear
메서드에서keyboardWillChangeFrameNotification
을 등록합니다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardNotification(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
이제 IQKeyboardManager를 사용하여 키보드 높이 변경 애니메이션을 커스텀할 수 있습니다. 필요에 따라 애니메이션 코드를 추가하고, 키보드 높이를 사용하거나 조작할 수 있습니다.