2015-08-23 7 views
1

Я пытаюсь воспроизвести функциональные возможности, которые можно увидеть в приложении контактов на iphone. У меня есть UISearchBar, который отклоняет клавиатуру при нажатии кнопки поиска. Это, однако, деактивирует кнопку отмены, и для активации требуется 2 касания. В приложении «Контакты» оно не деактивируется, когда нажата кнопка поиска, и клавиатура отклоняется.Отключить клавиатуру UISearchBar без нажатия кнопки отмены

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

Я попытался

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 

//Some other code 

//I have Tried 
//Attempt 1 
self.searchBar.endEditing(true) 
//Attempt 2 
    self.searchBar.resignFirstResponder() 
//Attempt 3 
    var textFieldInsideSearchBar = searchBar.valueForKey("searchField") as? UITextField 
    textFieldInsideSearchBar.endEditing(true) 

    } 

ответ

0

метод делегата разбирает вам SearchBar, так что вам не придется использовать self.searchBar, что может быть один из вопросов. Я обычно использую логику от вашего «Попытка 2».

Вы можете попробовать это реализовать:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) 

И позвони searchBar.resignFirstResponder().

Если он не работает, то попробуйте реализовать этот метод и вернуть истинный:

func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool 

Если вы используете UISearchBar в сочетании с UISearchDisplatController, а затем попробовать этот метод на searchDisplayController:

func setActive(_ visible: Bool, animated animated;: Bool) 
-1

Try,

[self.searchBar resignFirstResponder]; 
[(UIButton *)[self.searchBar valueForKey:@"_cancelButton"] setEnabled:YES];