7

検索バーと検索フィールドの背景画像を以下のコードを使用して設定しました。私はXcode5 DP2とios 7を使用しています。UISearchbarキャンセルボタンカスタム画像

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

このコードはうまくいきます。しかし、キャンセルボタンのイメージもカスタマイズしたいと思います。そのために、私はviewWillAppearとsearchBarTextDidBeginEditingで次のコードを使用しました。ロード中は初めて動作します。

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; 
    } 
} 

キャンセルボタンが1回クリックされると、その後カスタム画像は表示されません。私は_searchBar.subviewsをログに記録し、私はキャンセルボタンは、私がチェックしていますサブビューの下に来ていないことが理解このことから

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>> 
) 

ような結果を得ました。すべての可能なデリゲートメソッドで上記のコードを試しましたが、問題を解決できませんでした。

答えて

2

layoutSubviewsの機能で使用し、好きな場所にカスタムUIButtonを追加できます。 キャンセルボタンの機能を記述するのに苦労するだけです。