2017-02-21 41 views
0

Как убрать клавиатуру при нажатии клавиши поиска? У меня есть панель поиска в tableView, и я использовал следующий метод. Это не сработало. Любая идея почему? Заранее спасибо.Как убрать клавиатуру при нажатии клавиши поиска на столеView в swift 3?

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 
    return true 

} 

ОБНОВЛЕНИЕ 2.0 ----------------------------------------- -----------

Это изображение, что я пытаюсь сделать, когда я нажимаю кнопку поиска, ничего не произошло. enter image description here

У меня есть мой UISearchBar делегат поставил уже

class SearchVC: UIViewController, UITableViewDataSource, UISearchBarDelegate { 


@IBOutlet weak var tableView: UITableView! 

@IBOutlet weak var searchBar: UISearchBar! 

var data = [// my data here.] 

var filteredData: [String]! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.dataSource = self 
    searchBar.delegate = self 
    filteredData = data 


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

} 
+0

Вы можете использовать https://github.com/hackiftekhar/IQKeyboardManager, если это удобно. –

+0

Вы можете проверить, установлен ли делегат textField? – Ram

+0

'textFiledShouldReturn' должен быть' textFieldShouldReturn' ... "Поле" в имени метода –

ответ

4

Если вы используете UISearchBar, то сначала убедитесь, что его делегат устанавливается , а затем добавить эту функцию

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.resignFirstResponder() 

    } 
+0

HI, у меня уже есть эта функция. То, что я пытаюсь сделать, - это когда я нажимаю клавиатуру панели поиска, и когда я нажимаю клавишу поиска, клавиатура отклоняется. Я не уверен, как сделать вторую часть. – QQ10

+0

Вы можете проверить, что вы установили делегат UIsearchBar – Ram

+0

У меня нет func searchBarSearchButtonClicked (searchBar: UISearchBar) {}. Что мне делать внутри этой функции? – QQ10

0

убедитесь в viewDidLoad() вы self.textField.delegate = self и, конечно, ваш viewController должен соответствовать протоколу UITextFieldDelegate. Затем убедитесь, что вы правописание функции правильно textFieldShouldReturn()

1

Следующие работал для меня.

'searchActive' используется для переключения между отфильтрованными значениями и исходными нефильтрованными значениями.

«initialUseOfSearchBar» используется для отображения клавиатуры в первый раз, но после того, как клавиатура скрыта, когда пользователь нажимает «x».

var initialUseOfSearchBar = true 

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    searchActive = true 

    if searchBar.text?.characters.count == 0 { 
     searchActive = false 

     if initialUseOfSearchBar == false { 
      searchBar.resignFirstResponder() 
     } 
    } 
} 

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    if searchText.characters.count == 0 { 
     searchActive = false; 
     tableView.reloadData() 
     searchBar.resignFirstResponder() 
    } 

    initialUseOfSearchBar = false 

    ... 

} 

...