7

Mam ustawiony obraz tła dla paska wyszukiwania i pola wyszukiwania przy użyciu poniższego kodu. Używam Xcode5 DP2 i ios 7.Przycisk anulowania niestandardowego przycisku UISearchbar

[[UISearchBar appearance] setSearchFieldBackgroundImage:[UIImage imageNamed:@"fieldBg"] forState:UIControlStateNormal]; 
[[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"searchBarBg"]]; 

Ten kod działa poprawnie. Ale chcę również dostosować obraz przycisku anulowania. Do tego użyłem następującego kodu w viewWillAppear i searchBarTextDidBeginEditing. Działa po raz pierwszy podczas ładowania.

for (UIView *searchbuttons in _searchBar.subviews) 
{ 
    if ([searchbuttons isKindOfClass:[UIButton class]]) 
    { 
     UIButton *cancelButton = (UIButton*)searchbuttons; 
     cancelButton.enabled = YES; 
     [cancelButton setBackgroundImage:[UIImage imageNamed:@"cancelImage"] forState:UIControlStateNormal]; 
     break; 
    } 
} 

Jeśli przycisk Anuluj zostanie kliknięty jeden raz, niestandardowy obraz nie pojawi się po tym. Zalogowałem się _searchBar.subviews i dostał wyniki

po [_searchBar subviews] 
<__NSArrayM 0x210b1120>(
<UISearchBarBackground: 0x1fd6ff80; frame = (0 0; 768 44); userInteractionEnabled = NO; layer = <CALayer: 0x1fdafaf0>>, 
<UISearchBarTextField: 0x1fd6f2f0; frame = (5 -3; 758 50); text = ''; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1fdc10b0>; layer = <CALayer: 0x1fd6f480>> 
) 

z tego zrozumiałem, że anuluj nie przychodzi pod subviews gdzie jestem sprawdzających. Próbowałem powyższego kodu we wszystkich możliwych metodach delegatów, ale nie udało mi się rozwiązać problemu.

Odpowiedz

2

Można użyć funkcji [self setShowsCancelButton:NO animated:NO]; w layoutSubviews i dodać niestandardowy UIButton do miejsca, które lubisz. Musisz tylko wziąć ból pisania kodu dla funkcji przycisku anulowania.

Powiązane problemy