궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
USEFUL CODE

UIKit: 화면 터치하여 키보드 내리는 방법 - textField

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

textField를 사용할 때 텍스트를 작성하고 키보드를 내리려고 하면 자동으로 키보드가 닫히지 않는 현상은 단 몇 줄의 코드로 해결 가능하다. 

 

또, 텍스트 작성 시 자동 수정되는 부분도 해결해볼까 함!

 

화면 터치하여 키보드 내리기

아래 코드들을 viewController 의 아무 곳에서 추가하면 구현이 가능하다. 코드는 여러 가지가 있는데 편한 거 하나 골라서 아무거나 쓰면 OKAY

 

첫 번째 방법)

1. endEditing

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){

      self.view.endEditing(true)

}

2. UITapGestureRecognize

override func viewDidLoad() {
    super.viewDidLoad()
        
   let tap = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing))
   tap.cancelsTouchesInView = false
   view.addGestureRecognizer(tap)
}

문제점 endEditing()메서드를 호출하여 키보드 숨긴다. 하지만 이 함수를 키보드 숨길 때마다 호출해야 하는 문제점이 존재한다.

 

해결방법 ViewControllerextension 하여 키보드 숨기는 함수를 추가한다면 키보드 숨길 때마다 호출하는 문제를 해결할 수 있다. 

두 번째 방법) Extension

// 키보드 숨기기
extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false            
        view.addGestureRecognizer(tap)
    }
    
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

키보드가 있는 UIViewControllerextentionhideKeyboardWhenTappedAround()을 선언하면 화면을 터치하여 키보드 사라지는 로직을 구현할 수 있다.

호출 방법

override func viewDidLoad() {
    super.viewDidLoad()
    self.hideKeyboardWhenTappedAround() 
}

Disable autocorrect 자동 수정

textField에 텍스트를 입력하면 자동으로 수정되는 부분을 확인할 수 있는데, 자동 수정을 끄고 켤 수 있는 방법은 아래와 같다.

textView.autocorrectionType = .no

코드로 작성하거나, 아래 이미지처럼 inspector > correction > No를 선택하여 자동완성을 끈다.

 

읽어주셔서 감사합니다🤟

 

 


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.