0

У меня UISearchBar на моем UITableView, и способ -finishSearching, который выглядит следующим образом:Проблема отставки статус firstResponder UISearchBar в

- (void)finishSearching { 
    [overlayViewController.view removeFromSuperview]; 
    if ([sb isFirstResponder]) 
     [sb resignFirstResponder]; 
    myTableView.scrollEnabled = YES; 
} 

Этот метод вызывается каждый раз, когда я хочу, чтобы остановить поиск. Будь то использование кнопки отмены или поиска или просто нажатие на UITableView. Проблема в том, что я всегда получаю EXC_BAD_ACCESS, когда дело доходит до [sb resignFirstResponder];, и я понятия не имею, почему. Моя цель - реализовать такое поведение, как в адресной книге, где вы можете нажать SearchBar, который заставляет его придерживаться вершины и помещать это серое наложение поверх UITableView.

Любые предложения по этому вопросу?

Лучший
-f

+0

Попробуйте изменить порядок (в частности, если sb является подвидным объектом overlayViewController.view, то вы удаляете первого ответчика после того, как он был удален из иерархии представлений, по крайней мере, в предыдущих версиях был Bad Thing). –

ответ

2

Вы уверены, что removeFromSuperviewsb не выйдет слишком рано? Сначала попробуйте отступить, а затем удалите представление из супервизора.

+0

Умм, я не удаляю 'sb' из этого супервизора. Это свойство отображения overlayViewController. – flohei

+0

Я знаю. Но мне интересно, кто сохранит 'sb'. Если вы уверены, что ваш объект сохраняет его, найдите другое решение. – mvds

+0

Хорошо, я нашел ошибку. Я делал бесконечный цикл при отставке первого ответчика, потому что я вызвал метод '-finishSearching' из метода, который вызывается, когда' searchBar' хочет уйти с статуса 'firstResponder'. В любом случае спасибо! – flohei