Включить кнопку поиска, когда строка поиска пуста в строке поиска по умолчанию
В моем приложении я использую функцию поиска, используя панель поиска по умолчанию IOS. Если я помещаю некоторую строку для поиска, то ее работа прекрасна, но после первого поиска мне нужно отобразить весь источник данных (исходное содержимое.) Моя функциональность - строка поиска пуста, он отобразит весь источник данных. Моя проблема заключается в том, что я делаю строку поиска пустой в строке поиска по умолчанию, кнопка поиска автоматически переходит в состояние скрытия. Мне нужно включить кнопку поиска, даже строка пуста. Пожалуйста, направляйте меня, чтобы исправить эту проблему.
![enter image description here]()
Спасибо.
Ответы
Ответ 1
Пожалуйста, напишите, что следующий код может быть вам полезен:) Этот код отображается Кнопка поиска, если у вас пустая строка.
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
self.tblView.allowsSelection = NO;
self.tblView.scrollEnabled = NO;
UITextField *searchBarTextField = nil;
for (UIView *subview in self.searchBar.subviews)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
Попробуйте:) Спасибо:)
Ответ 2
На самом деле вы можете просто установить searchBar.enablesReturnKeyAutomatically = NO;
Протестировано на iOS 7 +
Ответ 3
Используйте следующий код для включения ключа возврата без текста
UITextField *searchField = nil;
for (UIView *subview in searchBar.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchField = (UITextField *)subview;
break;
}
}
if (searchField) {
searchField.enablesReturnKeyAutomatically = NO;
}
Ответ 4
Создайте пользовательский view
и на нем view
добавьте один button
, чтобы удалить клавиатуру. Добавьте этот вид, когда - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
delegate
метод UISearchBar
.
На этой кнопке отмените клавиатуру так же, как и view
, которую вы создали для этого button
. Также, если вы хотите выполнить поиск по этой кнопке, вы также можете это сделать.
Подробнее см. Изображение.
![enter image description here]()
Ответ 5
Он почти такой же, как и принятый ответ, но если вы работаете с iOS 7, вам понадобится дополнительная для цикла из-за некоторых изменений в строке поиска
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
UITextField *searchBarTextField = nil;
for (UIView *mainview in self.searchBar.subviews)
{
for (UIView *subview in mainview.subviews) {
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
Ответ 6
Используйте это, он работает для ios 6 и 7:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)search
{
UITextField *searchBarTextField = nil;
for (UIView *mainview in search.subviews) {
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
if ([mainview isKindOfClass:[UITextField class]]) {
searchBarTextField = (UITextField *)mainview;
break;
}
}
for (UIView *subview in mainview.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchBarTextField = (UITextField *)subview;
break;
}
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
Ответ 7
Если вы ищете более элегантное решение, вы можете использовать рекурсию, чтобы найти текстовое поле в строке поиска, как показано ниже. Это должно работать на ios 6, 7 или любые другие будущие ios, запрещающие любые отклонения от яблока.
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
UITextField* textField = [self findTextFieldInView:searchBar];
if (textField) {
textField.enablesReturnKeyAutomatically = NO;
}
}
-(UITextField*)findTextFieldInView:(UIView*)view {
if ([view isKindOfClass:[UITextField class]]) {
return (UITextField*)view;
}
for (UIView* subview in view.subviews) {
UITextField* textField = [self findTextFieldInView:subview];
if (textField) {
return textField;
}
}
return nil;
}
Ответ 8
Swift 3/iOS 10
for view1 in searchBar.subviews {
for view2 in view1.subviews {
if let searchBarTextField = view2 as? UITextField {
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}
Ответ 9
searchBar.enablesReturnKeyAutomatically = NO;
Ответ 10
Возможно, это ошибка на стороне яблока?. Так как из параметра .xib файла автоматически активировать ключ возврата не работает должным образом.
Просто добавьте следующий код:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.enablesReturnKeyAutomatically = NO;
return YES;}
Ответ 11
Вот решение, использующее Swift. Просто вставьте его в функцию viewDidLoad и убедитесь, что у вас есть IBOutlet вашего searchBar в коде. (в моем примере ниже переменная inputSearchBar является IBOutlet)
// making the search button available when the search text is empty
var searchBarTextField : UITextField!
for view1 in inputSearchBar.subviews {
for view2 in view1.subviews {
if view2.isKindOfClass(UITextField) {
searchBarTextField = view2 as UITextField
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}
Ответ 12
Простая быстрая версия:
if let searchTextField:UITextField = searchBar.subviews[0].subviews[2] as? UITextField {
searchTextField.enablesReturnKeyAutomatically = false
}