티스토리 뷰

반응형

아이폰 앱을 사용 시 터치 핸들러를 받아야 할 경우가 발생합니다. 키패드 올라간 상태로 외부 화면 클릭 시 키패드 숨기기 기능 시 필요합니다.


키패드 숨기는 기능을 사용 시 기본적으로 touchesBegan() 메소드를 override 하여 사용합니다.


1
2
3
4
override
func touchesBegan(_ touches: Set<UITouch>with event: UIEvent?) {
    // todo...
}



위와 같은 방법을 시도하였으나 touchBegan() 함수를 호출 못하는 경우가 생길 수 있습니다.


예를 들면 UiTableView의 Cell 터치 시도 시 발생합니다. 이럴 경우 (UiTableView의 Cell 터치 시도) 직접 GestureRecognizer을 Add 해주어 핸들러 캐치 하여야 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
override func viewDidLoad() {
    super.viewDidLoad()
      //핸들러 등록
    view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
}
 
//터치가 있을 시 핸들러 캐치
func handleTap(sender: UITapGestureRecognizer) {
     if sender.state == .ended {
         // todo...
     }
     sender.cancelsTouchesInView = false
}




참고로 #selector는 swift3에서 action 설정이 변경된 방식입니다. 

위 두 가지 방식을 사용하면 View와 TableView 둘다 터치 핸들러를 사용할 수 있습니다.







반응형

'프로그래밍 > iOS' 카테고리의 다른 글

[SWIFT] 키보드 숨기기  (0) 2017.12.19
[SWIFT] 스크롤 뷰에 xib View 불러오기  (0) 2017.12.18
[SWIFT3]Accelerometer(가속도계) 사용 법  (0) 2017.12.18
[SWIFT]옵셔널  (0) 2017.12.18
[SWIFT] Navigation Bar 숨김( Hide)  (0) 2017.12.18
댓글