У меня есть UISearchBar в моем интерфейсе, и я хочу настроить поведение маленькая ясная кнопка, которая появляется в панели поиска после того, как некоторый текст был введен (это - маленький серый круг с крестом в нем, появляется на правой стороне поля поиска).
В основном я хочу это к не, только очищают текст панели поиска (который является реализацией по умолчанию) но также очистить некоторый другой материал от моего интерфейса, но вызов одного из моих собственных методов.
Я ничего не могу найти в документах для класса UISearchBar или протоколе UISearchBarDelegate - не похоже, что можно непосредственно получить доступ к этому поведению.
Одна вещь, которую я действительно отмечал, состояла в том, что документы объяснили что метод делегата:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;
назван после того, как ясная кнопка касается.
Я первоначально написал некоторый код в том методе, который проверил текстовое свойство панели поиска, и если это было пусто, тогда это было очищено и сделать весь мой другой материал.
Две проблемы, который это, хотя:
Во-первых, по некоторым причинам я не могу понять, даже при том, что я говорю, что панель поиска к resignFirstResponder в конце моего метода, чего-то, где-нибудь задерживает его к becomeFirstResponder. Действительно раздражающий...
Во-вторых, если пользователь не использует ясную кнопку и просто удаляет текст в панели с помощью удалить кнопки на клавиатуре, этот метод исчерпан, и их результаты поиска уходят. Не хороший.
Любой совет или указатели в правильном направлении были бы большими!
Спасибо!
Я бы предложил использовать rangewiew
и rightviewMode
Методы UIrextfield для создания собственной четкой кнопки, которая использует одно и то же изображение. Я предполагаю, что курс, что UISearchBar позволит вам получить доступ к UITExtField Inted. Я думаю, что это будет.
Осознайте это из ссылочной библиотеки IPhone OS:
Если вид наложения перекрывает кнопку «Очистить кнопку CLEAR» всегда имеет приоритет при получении событий. По умолчанию правый наложение представление о перекрытии кнопки Clear.
Так что вам, вероятно, также потребуется отключить оригинальную Clear кнопку.
В моем приложении есть этот код. Разница в том, что я не поддерживаю «живой поиск», но вместо этого начинаю поиск, когда пользователь касается кнопки поиска на клавиатуре:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
if ([searchBar.text isEqualToString:@""]) {
//Clear stuff here
}
}