2010-12-07 10 views
5

Mam UISearchBar zagnieżdżone jako UIBarButtonItem w pasku UIToolbar. Podstawowa funkcjonalność działa, ale przycisk anulowania i pasek zakresu nie wyświetlają się. Próbowałem już włączyć je w konstruktorze interfejsów, a także próbowałem ręcznie wywoływać [searchBar setShowsCancelButton:YES], ale żadna z metod nie działa. Jakieś pomysły?UISearchBar w pasku UIToolbar nie będzie wyświetlał przycisku anulowania

To jest na iPadzie. Próbowałem w systemie iOS 3 i nie działa również w wersji 4.2.

Odpowiedz

3

Po prostu ograniczyłeś działanie UISearchBar. Jednym z rozwiązań jest nałożenie warstwy UISearchBar na pasek UIToolbar, zamiast umieszczania go na pasku narzędzi. Działa to wizualnie, ponieważ pasek wyszukiwania jest pomalowany tak jak pasek narzędzi - ich gradienty są takie same.

11

Musisz zawinąć UISearchBar z innym widokiem.

UISearchBar *searchBar = [UISearchBar new]; 
UIView *searchBarContainer = [[UIView alloc] initWithFrame:searchBar.frame]; 
[searchBarContainer addSubview:searchBar]; 
UIBarButtonItem *searchBarItem = 
    [[UIBarButtonItem alloc] initWithCustomView:searchBarContainer]; 
0

Czy koniecznie trzeba użyć przycisku Anuluj w pasku wyszukiwania? Wystarczy użyć metody textDidChange, aby sprawdzić, czy ciąg znaków został wyczyszczony i użyć go, aby wykonać to samo, co anulowanie.

+1

więc mówisz, że gdy użytkownik usunie ostatni znak, klawiatura powinna zostać zamknięta, a zakończenie edycji? To wygląda na niechlujstwo ze strony aplikacji. – SG1

Powiązane problemy