2015-12-23 2 views
0

У меня есть представление с UITextField, которое выполняет некоторые операции поиска на UITableView под ним.Нажмите «Жесты», чтобы отклонить UITextField с TableView

Проблема заключается в том, что, когда я настраивал жест нажатия, чтобы отклонить клавиатуру прикосновениями вне UITextField, она, похоже, отменяет метод didSelect моих ячеек TableView.

Вот код, который я сейчас использую в viewDidLoad:

let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:") 
    tapRecognizer.numberOfTapsRequired = 1 
    self.view.addGestureRecognizer(tapRecognizer) 

    func handleSingleTap(recognizer: UITapGestureRecognizer) { 

    self.view.endEditing(true) 

    } 

Как я могу установить это так, что касается вне UITextField закрыть клавиатуру, но по-прежнему позволяет мне выбрать клетки Tableview?

+0

Из любопытства; Почему вы не используете 'UISearchController' с табличным представлением? –

ответ

0

Вам необходимо реализовать делегат распознавателя жестов.

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldReceiveTouch touch: UITouch) -> Bool 
{ 
    if ([touch.view isDescendantOfView:yourTableView]) { 
     return false 
    } 
    return true 
} 

Таким образом, он не будет мешать прикосновению к виду на столе, чтобы по-прежнему позволять вам выбирать вид таблицы.

0

Не поощряйте использование жестов tap так много. У меня возникла проблема с этим, когда он переопределяет мою пользовательскую кнопку. Я решил это с XCDFormInputAccessoryView для iOS. И это хорошо работает для меня.

0

cancelsTouchesInView Недвижимость UITapGestureRecognizer до истины.

let tapGesture = UITapGestureRecognizer(target: self, action: Selector("hideKeyboard")) 
tapGesture.cancelsTouchesInView = true 
tableView.addGestureRecognizer(tapGesture) 
+0

Я действительно получил это, чтобы работать, выполняя противоположное, установка cancelsTouchesInView на false –

1

Нет необходимости добавлять любой жест распускать клавиатуры на Tableview, сама IOS SDK обеспечивают одно свойство распускать клавиатуры под названием keyboardDismissMode. мы можем это свойство от самого IB, проверьте ниже изображение для вашей справки.

enter image description here

Смежные вопросы