2016-08-15 2 views
1

Я использую эту библиотеку для SearchText FieldUITapGestureRecognizer breaks UITableView сделалSelectRowAtIndexPath в классе SearchField в Swift?

https://github.com/apasccon/SearchTextField

Вот мой код:

override func viewDidLoad() { 
    super.viewDidLoad() 


    self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard"))) 


} 

func dismissKeyboard() 
{ 
    ClientList.resignFirstResponder() 
    self.view.endEditing(true) 

} 

Отклонить клавиатуры работает, но didSelectRowAtIndexPath не вызывался, так что я не умею выбрать что-нибудь

Изображение для справки: enter image description here

Частичное решение я сделал:

func hideKeyboard(gestureRecognizer: UIGestureRecognizer) { 
     let point = gestureRecognizer.locationInView(ClientList.tableView) 
     let indexPath = ClientList.tableView!.indexPathForRowAtPoint(point) 

     if indexPath != nil { 
      return 
     } 
     if ClientList.becomeFirstResponder() { 
      ClientList.resignFirstResponder() 
     } 

    } 

Но теперь вопрос у меня есть другой список тоже, как я могу реализовать для другого списка?

ответ

2

Вы можете решить эту проблему как этот

ViewDidLoad

self.tap = UITapGestureRecognizer(target: self, action: "viewTapped:") 
self.tap.delegate = self 
self.view.addGestureRecognizer(self.tap) 

Функция

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
    if touch.view != nil && touch.view!.isDescendantOfView(self.tableView) { 
     return false 
    } 
    return true 
} 
+0

Просто обновление функцию ** Swift 3 ** 'Func gestureRecognizer (_ gestureRecognizer: UIGestureRecognizer, shouldReceive касание: UITouch) -> Bool { если touch.view ! = nil && touch.view! .isDescendant (из: self.tableView) { return false } return true } ' –

0

Кто является объектом жестов? Я думаю, что это должно быть в списке, так это то, что вы нажмете и выше зрения

+0

Я коснувшись вне ViewController и TableView еще один класс, я попробую ваше предложение –

0
 let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
    view.addGestureRecognizer(tap) 

Добавить это viewDidLoad

И добавить эту функцию

func dismissKeyboard() { 
    //Causes the view (or one of its embedded text fields) to resign the first responder status. 
    view.endEditing(true) 
} 
+0

Пожалуйста, проверьте этот вопрос еще раз, я редактировал его. У меня есть частичное решение. –

+0

Ваш код не ясно, вы можете сделать это немного понятнее – lordxxx

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