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()
메서드를 호출하여 키보드 숨긴다. 하지만 이 함수를 키보드 숨길 때마다 호출해야 하는 문제점이 존재한다.
해결방법 ViewController
를 extension
하여 키보드 숨기는 함수를 추가한다면 키보드 숨길 때마다 호출하는 문제를 해결할 수 있다.
두 번째 방법) 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)
}
}
키보드가 있는 UIViewController
에 extention
의 hideKeyboardWhenTappedAround()
을 선언하면 화면을 터치하여 키보드 사라지는 로직을 구현할 수 있다.
호출 방법
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboardWhenTappedAround()
}
Disable autocorrect 자동 수정
textField
에 텍스트를 입력하면 자동으로 수정되는 부분을 확인할 수 있는데, 자동 수정을 끄고 켤 수 있는 방법은 아래와 같다.
textView.autocorrectionType = .no
코드로 작성하거나, 아래 이미지처럼 inspector > correction > No를 선택하여 자동완성을 끈다.
읽어주셔서 감사합니다🤟
'USEFUL CODE' 카테고리의 다른 글
Swift : 번들에 있는 sound 파일 재생 함수 (0) | 2021.07.29 |
---|---|
(CODE) SwiftUI 컬러 익스텐션 만들기 - 헥스코드활용 (0) | 2021.05.08 |
(CODE) 자동으로 두 줄로 문장을 나눠주는 메서드 (0) | 2021.03.31 |
(CODE) 베젤이 없는 기종과 있는 기기에 SafeArea 각각 적용법 (0) | 2021.03.25 |
(CODE) DateFormatter - 한국날짜 형식으로 (1) | 2021.03.23 |