Я могу сцепиться в Ясную Кнопку UISearchBar?

У меня есть UISearchBar в моем интерфейсе, и я хочу настроить поведение маленькая ясная кнопка, которая появляется в панели поиска после того, как некоторый текст был введен (это - маленький серый круг с крестом в нем, появляется на правой стороне поля поиска).

В основном я хочу это к не, только очищают текст панели поиска (который является реализацией по умолчанию) но также очистить некоторый другой материал от моего интерфейса, но вызов одного из моих собственных методов.

Я ничего не могу найти в документах для класса UISearchBar или протоколе UISearchBarDelegate - не похоже, что можно непосредственно получить доступ к этому поведению.

Одна вещь, которую я действительно отмечал, состояла в том, что документы объяснили что метод делегата:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;

назван после того, как ясная кнопка касается.

Я первоначально написал некоторый код в том методе, который проверил текстовое свойство панели поиска, и если это было пусто, тогда это было очищено и сделать весь мой другой материал.

Две проблемы, который это, хотя:

Во-первых, по некоторым причинам я не могу понять, даже при том, что я говорю, что панель поиска к resignFirstResponder в конце моего метода, чего-то, где-нибудь задерживает его к becomeFirstResponder. Действительно раздражающий...

Во-вторых, если пользователь не использует ясную кнопку и просто удаляет текст в панели с помощью удалить кнопки на клавиатуре, этот метод исчерпан, и их результаты поиска уходят. Не хороший.

Любой совет или указатели в правильном направлении были бы большими!

Спасибо!

37
задан Jasarien 29 May 2009 в 09:55
поделиться

2 ответа

Я бы предложил использовать rangewiew и rightviewMode Методы UIrextfield для создания собственной четкой кнопки, которая использует одно и то же изображение. Я предполагаю, что курс, что UISearchBar позволит вам получить доступ к UITExtField Inted. Я думаю, что это будет.
Осознайте это из ссылочной библиотеки IPhone OS:

Если вид наложения перекрывает кнопку «Очистить кнопку CLEAR» всегда имеет приоритет при получении событий. По умолчанию правый наложение представление о перекрытии кнопки Clear.

Так что вам, вероятно, также потребуется отключить оригинальную Clear кнопку.

1
ответ дан 27 November 2019 в 04:56
поделиться

В моем приложении есть этот код. Разница в том, что я не поддерживаю «живой поиск», но вместо этого начинаю поиск, когда пользователь касается кнопки поиска на клавиатуре:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    if ([searchBar.text isEqualToString:@""]) {
        //Clear stuff here
    }
}
7
ответ дан 27 November 2019 в 04:56
поделиться