본문 바로가기
iOS

[iOS] 키보드가 올라오면서 뷰를 가리는 현상 제거 (Swift)

by 책 읽는 개발자_테드 2020. 6. 17.
반응형

 UITextField를 통해 텍스트를 입력할 때 아무런 설정을 하지 않으면 다음과 같이 키보드가 View를 가리는 현상이 발생합니다.

 

 

 해당 현상을 방지하기 위해서는 키보드 입력, 종료시에 특정한 로직을 추가하면 됩니다!

 

1. 키보드가 나타나면 호출할 함수를 작성합니다. 

2. 키보드가 종료하면 호출할 함수를 작성합니다.

3. 키보드의 등장과 종료를 감지하는 코드를 작성하고, 위에서 작성한 함수들을 연결합니다.

키보드가 나타나면 호출할 함수 작성           

 키보드가 등장하면, View를 150 만큼 위로 올립니다.

    @objc func keyboardWillAppear(_ sender: NotificationCenter){
        self.view.frame.origin.y -= 150
    }

 

키보드가 종료하면 호출할 함수를 작성           

 키보드가 종료하면, View를 제자리로 되돌립니다.

  @objc func keyboardWillDisappear(_ sender: NotificationCenter){
        self.view.frame.origin.y += 150
    }

 

키보드의 등장과 종료를 감지, 적절한 함수 연결           

 ViewController를 초기화할때 키보드의 등장과 종료를 감지하는 코드를 작성하고, 위에서 작성한 함수들을 #selector를 통해 연결합니다.

override func viewDidLoad() {
    super.viewDidLoad()
        
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear(_:)), name: NSNotification.Name.UIKeyboardWillShow , object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear(_:)), name: NSNotification.Name.UIKeyboardWillHide , object: nil)
 }

#selector 는 함수를 직접 지정해서 사용하는 식별자입니다. 

 

 

모든 조치를 완료하면 아래와 같이 키보드가 View를 가리는 현상이 없어집니다!

 

 

출처

https://developer.apple.com/documentation/uikit/uiresponder/1621576-keyboardwillshownotification

https://stackoverflow.com/questions/25693130/move-textfield-when-keyboard-appears-swift?rq=1

https://0urtrees.tistory.com/35

 

반응형

댓글