[swift] IQKeyboardManager를 사용해서 키보드가 나타날 때 뷰의 위치를 조절할 수 있나요?

IQKeyboardManager는 키보드 관련 이벤트를 자동으로 처리해주는 라이브러리입니다. 이 라이브러리를 사용하면 UITextField나 UITextView 등의 입력 필드를 사용할 때 키보드가 나타날 때 자동으로 뷰의 위치를 조절할 수 있습니다.

먼저, IQKeyboardManager 라이브러리를 프로젝트에 추가해야 합니다. 프로젝트의 Podfile에 다음과 같이 추가해주세요:

pod 'IQKeyboardManagerSwift'

그리고 터미널에서 pod install 명령어를 실행하여 라이브러리를 다운로드하고 설치합니다.

이제, AppDelegate.swift 파일에서 다음과 같이 IQKeyboardManager를 설정해줍니다:

import IQKeyboardManagerSwift

...

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    IQKeyboardManager.shared.enable = true
    return true
}

위 코드는 앱이 실행될 때 IQKeyboardManager를 활성화합니다.

이제 UITextField나 UITextView 등에서 키보드가 나타날 때 뷰의 위치를 조절하려면, 해당 뷰 컨트롤러에서 IQKeyboardManager의 애니메이션 관련 메서드를 사용하면 됩니다. 다음은 예시 코드입니다:

import IQKeyboardManagerSwift

...

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        IQKeyboardManager.shared.enable = true

        IQKeyboardManager.shared.shouldResignOnTouchOutside = true

        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
    }

    @objc func keyboardWillShow(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
            self.view.frame.origin.y -= keyboardSize.height
        }
    }

    @objc func keyboardWillHide(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
            self.view.frame.origin.y += keyboardSize.height
        }
    }
}

위 코드에서는 키보드가 나타날 때 뷰의 origin.y 값을 키보드의 높이만큼 이동시키고, 키보드가 사라질 때는 원래 위치로 되돌리는 동작을 구현하였습니다.

위와 같이 IQKeyboardManager를 사용하여 키보드가 나타날 때 뷰의 위치를 조절할 수 있습니다. 이를 통해 사용자가 키보드를 열 때 뷰가 가려지는 문제를 해결할 수 있습니다.

더 자세한 정보는 IQKeyboardManager의 공식 문서를 참고하시기 바랍니다.