[iOS/Swift] IQKeyboardManagerSwift 라이브러리 특정 뷰컨에서는 실행되지 않도록 하고 싶다면

김혜수·2022년 5월 23일
0

iOS를 개발하면서..

목록 보기
16/20

카드나 프로젝트에서 키보드를 좀 더 쉽게 핸들링하기 위해서 IQKeyboardManager라는 라이브러리를 추가했었다.

https://github.com/hackiftekhar/IQKeyboardManager

문제

해당 라이브러리의 리드미에 적혀있는 대로, AppDelegate에서 해당 라이브러리 사용을 할 수 있게 해줬다.

그런데, 이 라이브러리를 적용하고 나니까 특정한 뷰컨에서 키보드가 나타날때마다 오류가 생겼다.
그래서 그 뷰컨에서만 이 라이브러리를 적용하고 싶지 않아졌다.

해결

적용하고 싶지 않은 뷰컨에 다음과 같은 코드를 추가한다.

    // MARK: - VC LifeCycle
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
     
        setKeyboardManagerEnable(false)
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        
        setKeyboardManagerEnable(true)
    }
    
    // MARK: - Function
    
    private func setKeyboardManagerEnable(_ isEnabled: Bool) {
        IQKeyboardManager.shared.enable = isEnabled
    }

해당 라이브러리는 enable, disable이 싱글턴으로 관리되는것 같다. (shared)
따라서 해당 뷰가 나타날때마다 disable, 다시 사라지고 다른뷰가 보이면 enable을 해주면 된다.

profile
iOS를 좋아하는 사람

0개의 댓글