Панель поиска UIS не вызывает searchBarTextDidBeginEditing - PullRequest
6 голосов
/ 04 ноября 2011

У меня есть простой контроллер вида с uisearchbar и uitable .Моя проблема заключается в том, что при нажатии на строку поиска я вижу, что функция делегата searchBarShouldBeginEditing вызывается, но не searchBarTextDidBeginEditing (и из-за этого клавиатура не открывается и поиск не редактируется)

Я попытался реализовать функцию делегата searchBarShouldBeginEditing , возвращающую YES, установить панель поиска в качестве первого респондента, но никоим образом не получить searchBarTextDidBeginEditing вызываемый ...

Любая идея, что можетчто происходит ??

Какой-то код:

controller.h

@interface ViewController : UIViewController <UISearchBarDelegate>
{
   UISearchBar * searchbar;
}

@property (nonatomic, retain) IBOutlet UISearchBar* searchbar;

@end

controller.m

@synthesize searchbar;

- (BOOL)respondsToSelector:(SEL)sel {
    NSLog(@"Queried about %@", NSStringFromSelector(sel));
    return [super respondsToSelector:sel];
}

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarShouldBeginEditing -Are we getting here??"); 
    return YES;  
}  
-(void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    NSLog(@"searchBarTextDidBeginEditing -Are we getting here??");  
}

Конечно же, у моего класса еще многокод (который, безусловно, как-то влияет на панель поиска), но если у кого-то возникнут аналогичные проблемы с панелью поиска, он будет очень признателен за его ответ;)

Я попытался создать простое приложение, содержащее только панель поиска, и, очевидно, оно работает ...

РЕДАКТИРОВАНИЕ:

Тестируя немного, я обнаружил, что это не связано с uisearchbar, так как я добавил TextField, получая тот же результат (просто вызывается функция делегата textFieldShouldStartEditing)

Приложение имеет все контроллеры представления внутри котроллера UITabBar, но я не думаю, что это может вызвать весь этот беспорядок ...

EDITING2:

Действительно странное поведение: установка функции IBAction на событие TouchDown UITextfield работает отлично, но установка функции IBAction на EditingDidBegin никогда не срабатывает ...

Почему это событие нельзя назвать ??

Ответы [ 3 ]

13 голосов
/ 04 ноября 2011

вы установили свойство делегата?

searchbar.delegate = self;
0 голосов
/ 30 декабря 2018

У меня была эта проблема, когда я конвертировал из автономного UISearchBar в searchBar, интегрированный в UINavigationBar.

При преобразовании своего кода я все еще выделял UISearchBar и устанавливал для этого делегата.То, что я должен был сделать, - это настроить панель поиска, которая входит в UISearchController, и установить делегат этого,

self.searchController.searchBar.delegate = self;

Как только я это сделал, мои методы делегата начали срабатывать!

0 голосов
/ 15 марта 2016

Может быть, вы где-нибудь позвоните [searchbar resignFirstResponder].Это было в моей аналогичной проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...