2013-12-10 29 views
5

私はUITableViewを持っていますが、ビュー全体には届きません。概して、UITableViewはビューよりも2倍小さい。UISearchBarをクリックするとビューのトップに移動します

そこで、私は「バーを検索し、ディスプレイコントローラ検索」オブジェクトライブラリからのUITableViewにをを追加します。したがって、視覚化するには、searchBarが画面の中央に表示されます。

は、ここに私の見解です:

enter image description here

私の問題:私は私の研究を行うには、検索フィールドをクリックすると、検索バーの代わりに、ビューの上部に起こっていますナビゲーションバー!そして、その移行は非常にひどい...私はsearchBarを最初の場所にとどまるように制約することができますか?

+0

同じ問題を抱えていて、私はそれを頼むつもりでした。検索バーは上部に移動することを意図していますが、問題はテーブルに残る空きスペースです。コントローラのビューはテーブルビューだけではないので、検索バーはテーブルビューを直接操作して空のスペースをカバーすることはできません。 – giorashc

+0

@giorashc self.searchDisplayControllerまたはself.searchDisplayController.searchResultsTableViewのフレームを設定しましたか?フレームを設定してみてください - – the1pawan

+0

UISearchDisplayControllerの代わりに単純なUISearchBarを使用してください – iEinstein

答えて

5

問題は検索ディスプレイコントローラに関連しています。あなたはアニメーションのコントロールを持っていないし、あなたのTableViewの上に座っているビューがあるときにそれをうまく処理していないようです。私たちは同じ問題を抱えていました。私たちが修正した最も簡単な方法は、検索ディスプレイコントローラをストーリーボードの簡単な検索バーに置き換えることです。

これは、クラスが正しく動作するように検索バーのデリゲートメソッドを実装する必要があることを意味します。

は、単純にそうよう searchBarTextDidBeginEditingsearchBarTextDidEndEditingをオーバーライドし、適切にアニメーション化するには:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { 
CGRect tableViewFrame = self.tableView.frame; 
tableViewFrame.origin.y = tableViewFrame.origin.y - self.yourHeaderView.bounds.size.height; 
[UIView animateWithDuration:0.25 
       animations:^{ self.tableView.frame = tableViewFrame; }]; 
} 

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { 
CGRect tableViewFrame = self.tableView.frame; 
tableViewFrame.origin.y = tableViewFrame.origin.y + self.yourHeaderView.bounds.size.height; 
[UIView animateWithDuration:0.25 
       animations:^{ self.tableView.frame = tableViewFrame; }]; 
} 

は、簡単に言えば、あなたはそれに基づいてビューを介してテーブルビューの枠を移動し、高さです。アニメーションにより、より滑らかできれいになります。

関連する問題