2015-01-02 14 views
5

検索バーコントローラをそこから引き出すときに表示される標準の検索バーではなく、ナビゲーションバーのボタンからUISearchDisplayControllerをアクティブにできるかどうか疑問に思っていましたXcodeのライブラリカレンダーアプリでこのような機能:UISearchDisplayControllerボタンからデフォルトの検索フィールドではありません

[self.searchDisplayController setActive:YES animated:YES]; 

をしかし、あなたはまだ検索バーを必要とし、それは検索バーがどこからアニメーション化:

UISearchDisplayController in the Calendar app あなたはそうのようなアクションを発射するボタンを取得することができます。理想的には、gifのように上から来てほしいです。

ご迷惑をおかけして申し訳ございません。デビッド。

+0

検索バーを作成するだけです。ロード時にフレームがオフスクリーンになるように設定します。それがコンセントプロパティを持っていることを確認してください。ボタンをクリックしてfirstResponderを作るときにそれをアニメ化する – soulshined

答えて

7

古い質問が、私は答えはので、私はそれが再訪の価値があったと思ったが...私はUISearchControllerではなくUISearchDisplayControllerを使用最後に

あなたは検索を有効にしますが、検索バーを望んでいない、あなたが実装する必要が全く検索バーがないので、あなたがそれをしなければならないすべては

self.searchController.active = YES; 

、その後を使用して検索をアクティブにしたい場合presentSearchController:あなた自身のUISearchControllerDelegateプロトコルのメソッド。

- (void)presentSearchController:(UISearchController *)searchController { 
    [self.window.rootViewController presentViewController:self.searchController animated:YES completion:nil]; 
} 

これは全く同じアニメーションを持っていませんが、私は通常のビューコントローラのアニメーションAPIを使用していると思います。

+0

有益な答えをありがとう。キーボードが自動的に表示されないという問題もありますか?さまざまな場所で 'self.searchController.searchBar becomeFirstResponder'を呼び出そうとしましたが、提示されたアニメーションが完了した後にのみ動作します。だから、searchBarが最初に滑って、次にキーボードがスライドされます。しかし、私はそれらを一度にアニメーション化したいです。何らかの理由で、 'searchBar.canBecomeFirstResponder'は、提示されるアニメーションが完了する前に、常に「いいえ」です。何か案が? –

+0

カレンダーアプリケーションと同じように動作させるために、所有しているのと同じView Controller(つまり、 'self.window.rootViewController'ではなく' self')から検索コントローラを提示し、 'searchController.hidesNavigationBarDuringPresentation = false 'と' searchController.searchBar.searchBarStyle = .prominent'です。 – maxkonovalov

関連する問題