Как мога да деактивирам/активирам бутона за търсене на клавиатурата 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 за това също е много полезна, и е чудесна отправна точка за персонализиране на поведението на searchBar.

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