5

これが簡単な質問であることを願っています。

ここに画像の説明を入力

キャンセル ボタンを表示する検索バーがあります。

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    [searchBar setShowsCancelButton:YES animated:YES];
}

唯一の問題は、キャンセル ボタンのテキストが表示されないことです。

ここに画像の説明を入力

ボタンをクリックすることはできますが、ボタンが表示されているときにテキストが表示されないため、ボタンは明らかにそこにあります。ボタンが見えないかのようです。コードは iOS6 では正常に機能しましたが、現在 iOS7 ではこの問題が発生しています。どんな体にもアイデアはありますか?私は UISplitViewController を使用しており、私の検索バーは MasterViewController の navigationItem.titleView にあります。

4

6 に答える 6

9

おそらくあなたは明確な色合いを持っています、それが私がイメージングを設定しようとする唯一の理由です

_searchBar.tintColor = [UIColor redColor];

UISearchBar はどのように作成しますか?

于 2013-10-21T18:09:19.843 に答える
5

それがAppleのバグなのか意図的なものなのかはわかりませんが、navigationControllerにいる間はキャンセルボタンが表示されません。ナビゲーション コントローラーに追加する前に、検索バーをビューに追加してみてください。

UIView *searchBarView = [[UIView alloc] initWithFrame:[searchBar bounds]];
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;
于 2013-10-21T18:07:16.943 に答える
3

私も同じ問題を抱えていました。ボタンはありますが、titleColor は背景と同じです。私が修正したのは、検索バーのキャンセル ボタンのサブビューを検索し、ボタンのタイトルの色を別の色に設定することでした。キャンセル ボタンが表示された後にこれを設定することに注意してください。キャンセル ボタンが表示される前にビューが表示されません。私のコード:

        [self.mySearchBar setShowsCancelButton:YES animated:YES];
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
            for(id subview in [self.mySearchBar subviews])
            {
                if ([subview isKindOfClass:[UIButton class]]) {
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

                }
            }
        } else {
            for(id subview in [[[self.mySearchBar subviews] objectAtIndex:0] subviews])
            {
                if ([subview isKindOfClass:[UIButton class]]) {
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
                }
            }
        }

また、iOS 7 では、キャンセル ボタンが検索バーの最初のサブビューに埋め込まれていることにも注意してください。以前の iOS 7 は、検索バーの直接のサブビューです。

于 2013-11-07T09:13:31.697 に答える
-1

_searchBar.backgroundImage = <#いくつかの色#>; _searchBar.backgroundColor = <#いくつかの色#>; // ボタンの色をキャンセルします。

于 2014-02-09T11:05:36.330 に答える
-1

上記の回答を見て、正解を見つけることができませんでした。これは非常に古い質問ですが、誰かがこの問題に遭遇し、Storybaord を使用している場合、Storybaord で利用可能なオプションがあります (つまり、 UISearchbar をクリックし、属性インスペクターに移動し、オプションで "Shows Cancel Button" を探します)。スクリーンショットを参照してくださいここに画像の説明を入力

于 2016-08-29T05:59:26.857 に答える