6

UISearchBar で UISearchDisplayController を使用しています。IB を使用してこの UISearchBar をアプリに配置すると、次のようになります。

代替テキスト http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

良い: テーピングを開始すると、結果の popovercontroller が魔法のように表示されます (それを表示するために自分で何も書いていません!)

次に、結果の中で行がクリックされたときに、 PopoverControllerを閉じたいのですが、この段階では UIPopoverController をインスタンス化していません。この UIPopoverController への参照を取得してそれを閉じることができないことを除いて、何もしなくてもすべてが完全に機能するため、これは本当に素晴らしいことです:(UISearchDisplayControllersearchContentsControllerUIPopoverController

この「魔法のように」作成された UIPopoverController への参照を取得する方法を知っている人はいますか? (これは、iPad が本当に「魔法の」デバイスであることの証明です ;)

contentController から (たとえば親プロパティを介して) UIPopoverController への参照があると思いましたが、それへのポインターを取得する方法が見つかりません:/

4

3 に答える 3

11

それでは動作しませ[searchDisplayController setActive:NO animated:YES];んか?

于 2010-07-12T11:46:31.493 に答える
1

上記の解決策はどれもうまくいきませんでしたが、これで解決しました:

    [self.searchDisplayController setActive:NO animated:YES];
    [searchBar becomeFirstResponder];

この方法では、カーソルはフィールド内にとどまりますが、結果がない場合はポップオーバーが閉じられます。

完全なコード:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if ([searchText isEqualToString:@""]) {
        [self.searchDisplayController setActive:NO animated:YES];
        [searchBar becomeFirstResponder];
    }
}
于 2011-01-04T04:48:22.997 に答える
0

IBでUISearchDisplayControllerをどのように接続したかについてもう少し詳しく教えてください。iPadのUIPopoverControllersでは特別なことは何もしないので、searchContentsControllerをUIPopoverControllerであるコントローラーに設定したと思いますか?その場合、必要な参照がすでにありますが、通常はこのビューを閉じる必要はありませんが、検索をキャンセルすると、このビューは閉じられます。

于 2010-07-09T23:37:01.177 に答える