티스토리 뷰
SWIFT에서 키보드를 숨기는 기능이 빈번히 발생합니다. 예를 들면 검색바에서 검색 도중 화면 클릭 시 키보드 사라지게 하는 로직 등 다양하게 사용됩니다.
(TextField or UISearchBar).resignFirstResponder()
보편적으로 사용하는 기능은 resignFirstResponder()를 호출하여 키보드 숨깁니다. 하지만 이 함수를 키보드 숨길 때마다 호출해야하는 문제점이 있습니다.
ViewController를 extension 하여 키보드 숨기는 함수를 추가한다면 키보드 숨길 때마다 호출하는 문제를 해결 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // MARK: 키보드 숨기기(단, 모든 클릭 시 키보드 숨기기 함수가 호출됨) // 원하는 곳에 배치 extension UIViewController { func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) } func dismissKeyboard() { view.endEditing(true) } } |
참고로 extension은 Utils.swift을 만들어서 선언 또는 AppDelegate.swift 에서 한번에 모아서 선언하는게 차후에 수정 시 편합니다.
키보드가 있는 UIViewController에서 extention에서 구현한 함수인 hideKeyboardWhenTappedAround() 을 선언하면 Guesture를 통하여 View 클릭 시 키보드 사라지는 로직을 구현할 수 있습니다.
1 2 3 4 5 6 | override func viewDidLoad() { super.viewDidLoad() self.hideKeyboardWhenTappedAround() } |
기본 View 가 아닌 다른 View를 터치 시 키보드 사라지고 싶은 부분에 다음 함수를 사용하시면 됩니다.
'(Target)View.hideKeyboardWhenTappedAround'
정리
extension 을 통한 키보드 숨기는 기능은 한번 등록하면 사용하는 View에 hideKeyboardWhenTappedAround 를 넣어주면 됩니다. 등록만 하면 화면 터치를 감지하여 키보드를 숨기니 개발자 입장에서는 따로 신경 안써도 되서 좋은 방법인거 같습니다.
'프로그래밍 > iOS' 카테고리의 다른 글
[Apple] 엔터프라이즈 계정신청 (Enterprise Program) (8) | 2017.12.19 |
---|---|
[Apple] Agent 계정 이관 하는 법 (0) | 2017.12.19 |
[SWIFT] 스크롤 뷰에 xib View 불러오기 (0) | 2017.12.18 |
[SWIFT]화면 터치 이벤트 받기 (UITableView, UIView) (0) | 2017.12.18 |
[SWIFT3]Accelerometer(가속도계) 사용 법 (0) | 2017.12.18 |
- IOS
- missionchina
- missioon
- swift
- Android Studio
- RXjava
- 탁구
- 임용고시
- 디자인패턴
- flutter
- 스코어헬퍼
- MCC
- 알고리즘
- 미션차이나센터
- issue
- 고시문헬퍼
- 고시문
- java
- DI
- 안드로이드
- IT
- Android
- 선교
- view
- 점수판
- 코틀린
- push
- Kotlin
- 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |