Как отключить/включить кнопку поиска на клавиатуре UISearchBar?

Я использую UISearchBar в своем коде. Я импортировал его делегата в заголовочный файл и также реализовал некоторые методы делегата в файле реализации.

Когда мы нажмем на UISearchBar, появится клавиатура для ввода текста. Клавиша возврата на клавиатуре — это кнопка «Поиск». Он будет отключен по умолчанию. Когда мы вводим символ, он становится активным. (Я прав?)

Здесь возникает проблема. Я хочу включить клавишу возврата клавиатуры UISearchBar, когда пользователь вводит как минимум две буквы.

Является ли это возможным? Если да, то как мы можем это сделать?

Спасибо


person Confused    schedule 15.03.2012    source источник


Ответы (6)


Вы не можете отключить кнопку поиска. Что вы можете сделать, так это использовать методы UISearchBarDelegate, чтобы выяснить, следует ли вам предпринимать действия при нажатии кнопки поиска, например:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    if (searchBar.text.length < 2) {
        return;
    }
    else {
        // Do search stuff here
    }
}

Для этого также очень полезна документация Apple, и является отличной отправной точкой для настройки поведения панели поиска.

person MishieMoo    schedule 15.03.2012
comment
Но пользователю непонятно, если кнопка поиска активна, но ничего не делать - person Nik Kov; 31.08.2017
comment
Как сказал @NikKov. Проблема в том, как отключить (изменить на серый цвет) кнопку поиска. - person Piotr Wasilewicz; 20.10.2017

Краткий ответ - нет...

Более длинный, хакерский и экзотический вариант здесь: Как отключить/включить ключ возврата в UITextField?

person Alladinian    schedule 15.03.2012
comment
В частности, Могу ли я буквально отключить клавишу возврата для панели поиска, это правильный ответ. За исключением того, что требование OP может быть выполнено иначе - person NSNoob; 16.12.2015

Вот как я это делаю:

    if([searchbar.text length] == 0) {
        [searchBar performSelector: @selector(resignFirstResponder)
                           withObject: nil
                           afterDelay: 0.1];
    }
person Dhiraj Umale    schedule 02.05.2013

Вы можете попробовать это,

 - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope{
       if (searchText.length>=2) {
         [Main_SearchBar resignFirstResponder];

         // Do your code here
       }
}
person Kupendiran iOS    schedule 31.08.2015

Вы можете сделать это, обратившись к свойству UISearchBar.

let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.enablesReturnKeyAutomatically = false

Играя со свойством enablesReturnKeyAutomatically, вы можете достичь своих целей.

Спасибо.

person Hitesh Surani    schedule 09.07.2020

Вы можете попробовать это

if([self.searchBar.text length] > 2)
{
    [self.searchBar resignFirstResponder];
}
person Krunal    schedule 15.03.2012