6

現在、UISearchBar (UISearchDisplayController に接続) を持っていますが、検索バーが選択されていないときにカスタム ボタンを右側に表示できるように、検索バーの幅を狭めました。ボタンは、他のビューにアクセスするために使用されます。

ただし、検索バーを選択してキャンセルを押して (または検索を実行して)、検索バーがカスタム ボタンと共に表示される通常のビューに戻ると、検索バーがアニメーション化し、ボタンが表示されません。基本的に、検索バーを画面の一部だけにしたい場合は、検索バーが画面の幅全体を占めます。

検索バーが画面の幅全体にアニメーション化されないようにする方法はありますか?

これは、検索バーの CGRect を定義した方法です。

self = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 45.0f)]
4

2 に答える 2

3

結局、これに対する答えは私が思っていたよりも簡単でした。何らかの理由で、iPhone SDK が検索バーのフレームの幅をいっぱいにするため、ユーザーがキャンセル ボタンを押して searchBarCancelButtonClicked() イベントがトリガーされるたびに、必要なサイズに常にリセットする必要があります。シンプルな [searchBar setFrame: frame] で解決しました。:)

ピーター、あなたがリンクした投稿の問題は少し異なりました。私はすでに検索バーのサイズを希望どおりに変更できていました。必要だったのは、全幅に戻るのを止めることでした。リンクをありがとう。

于 2010-06-17T09:39:29.893 に答える
1

この SO投稿が役立つ場合があります。通常の描画を停止するには、UISearchBar をサブクラス化する必要があるようです。

更新UINavigationBar で UISearchBar を使用し、触れたときにサイズを変更してバーを塗りつぶしたいと思いました - Safari アプリの動作と同じです。これを行う唯一の方法は、UISearchBar を直接使用することでした。問題は少し異なりますが、最初に検索バーだけを使用して、必要な UI 動作を取得してみることができます。次に、後で検索するためのロジックを接続します。つまり、UISearchDisplayController に依存しないでください。

于 2010-06-15T17:01:45.033 に答える