2016-12-22 1 views
1

알다시피 아래 코드는 endEditing searchBar의 firstResponder가 될 수 있지만 scrollView 또는 tableView가 있으면 효과 은 다르다. tabGesture를 tableView에 추가 한 다음 tableView (_ tableView : UITableView, didSelectRowAt indexPath : IndexPath) 메서드를 수행 할 수 없습니다.

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

    self.view.endEditing(true) 
} 

내가있는 tableView에 tapGesture 추가, 그래서 검색 창의 firstResponder을 endEditing 수 있습니다.

하지만 내 tableView에 tapGesture을 추가하면 tableView의 tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 기능이 더 이상 작동하지 않습니다.

어떻게 문제를 해결할 수 있습니까?


추가

내 유용한 코드는 다음과 같습니다 :

let tap:UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action: #selector(tapTableView)) 
self.tableView.addGestureRecognizer(tap) 


func tapTableView() { 

    self.searchBar.endEditing(true) 
} 
+0

당신이이 모든 접촉을 무시합니다 닿아보기를 확인하지 않는 대신에 당신은 SeanLintern88 어떻게 @ 같은 .interactive – SeanLintern88

+0

에 내장되어있는 tableview에 keyboardDismiss 사용을 고려할 수 tableView에서 kwyboardDismiss를 사용 하시겠습니까? – aircraft

답변

0

를 추가하려면 테이블 뷰 대신
let tap:UITapGestureRecognizer = UITapGestureRecognizer.init(target: self, action: #selector(tapTableView)) 
self.view.addGestureRecognizer(tap) 
+0

아니요, 작동하지 않습니다. – aircraft

+0

그리고 'self.searchBar.endEditing (true)'을 this 'self.view.endEditing (true)'로 변경하십시오. –

+0

동생이며이 설명은 쓸모가 없습니다. – aircraft

0

있는 tableView

에보기에 tapGesture을하지 추가
tableView.keyboardDismissMode = .onDrag 

.onDrag.interactive으로 변경할 수 있습니다. 접촉을 제거하기 시작했습니다.

편집 : 사과 문서에서

case none 
    The keyboard does not get dismissed with a drag. 
case onDrag 
    The keyboard is dismissed when a drag begins. 
case interactive 
    The keyboard follows the dragging touch offscreen, and can be pulled upward again to cancel the dismiss. 
+0

자세한 정보를 제공해 주시겠습니까? 나는'tableView.keyboardDismissMode = .onDrag' 또는'를 설정했다. 대화식', 아무런 효과가 없다, 어딘가 잘못 됐습니까? – aircraft

관련 문제