화면에서 키보드를 숨기려면 iOS SDK에 미리 정의된 일부 내부 기능을 사용해야 합니다. 텍스트 필드 또는 textView에 입력할 때 키보드가 화면에 나타납니다. 텍스트 필드에 따라 내부 기능을 활용해야 합니다.
예를 들어 현재 텍스트 필드가 tfOne인 경우 아래 코드를 사용하여 텍스트 필드를 숨길 수 있습니다.
tfOne.resignFirstResponder()
이 코드는 호출될 때 키보드를 숨깁니다. 버튼 또는 제스처 인식기에 대한 작업에서 호출할 수 있습니다.
이 방법은 제한된 textFields에 적합하지만 여러 textFields 또는 textviews에서 동일한 결과를 얻으려면 개선해야 합니다.
같은 기능을 만들 수 있습니다.
func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) }
수업에서 이 기능을 사용할 수 있으며 텍스트 필드 또는 텍스트 보기 외부의 화면을 탭할 때마다 키보드를 숨깁니다.
그러나 제스처가 추가될 뷰가 필요하다는 것을 알 수 있으므로 이 기능을 UIViewExtension에 포함해야 합니다.
extension UIViewController { func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) } }
이제 viewDidLoad()에서 이 함수를 호출할 수 있으며 텍스트 보기/필드를 제외한 보기의 아무 곳이나 탭할 때마다 키보드가 숨겨집니다.