問題は検索ディスプレイコントローラに関連しています。あなたはアニメーションのコントロールを持っていないし、あなたのTableViewの上に座っているビューがあるときにそれをうまく処理していないようです。私たちは同じ問題を抱えていました。私たちが修正した最も簡単な方法は、検索ディスプレイコントローラをストーリーボードの簡単な検索バーに置き換えることです。
これは、クラスが正しく動作するように検索バーのデリゲートメソッドを実装する必要があることを意味します。
は、単純にそうよう
searchBarTextDidBeginEditingと
searchBarTextDidEndEditingをオーバーライドし、適切にアニメーション化するには:
- (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; }];
}
は、簡単に言えば、あなたはそれに基づいてビューを介してテーブルビューの枠を移動し、高さです。アニメーションにより、より滑らかできれいになります。
同じ問題を抱えていて、私はそれを頼むつもりでした。検索バーは上部に移動することを意図していますが、問題はテーブルに残る空きスペースです。コントローラのビューはテーブルビューだけではないので、検索バーはテーブルビューを直接操作して空のスペースをカバーすることはできません。 – giorashc
@giorashc self.searchDisplayControllerまたはself.searchDisplayController.searchResultsTableViewのフレームを設定しましたか?フレームを設定してみてください - – the1pawan
UISearchDisplayControllerの代わりに単純なUISearchBarを使用してください – iEinstein