UISearchBar をアクティブにしたときに、ソース テーブル ビュー上でアニメーション化される透明な黒いオーバーレイを削除するにはどうすればよいですか?
どうにかして UIView の責任者にたどり着き、そのアルファを 0 に設定できますか?
または、黒いオーバーレイの上に空の searchResultsTableView を表示する方法はありますか?
UISearchBar をアクティブにしたときに、ソース テーブル ビュー上でアニメーション化される透明な黒いオーバーレイを削除するにはどうすればよいですか?
どうにかして UIView の責任者にたどり着き、そのアルファを 0 に設定できますか?
または、黒いオーバーレイの上に空の searchResultsTableView を表示する方法はありますか?
po [self.view subviews]
(id) $1 = 0x0a3155f0 <__NSArrayM 0xa3155f0>(
<ATShadowTableView: 0xc341600; baseClass = UITableView; frame = (0 44; 320 411); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xa627200>; layer = <CALayer: 0xa626d30>; contentOffset: {0, 0}>,
<UISearchBar: 0xa618f40; frame = (0 0; 320 44); text = ''; layer = <CALayer: 0xa619040>>,
<UIControl: 0xa329fc0; frame = (0 44; 320 455); alpha = 0.8; opaque = NO; animations = { opacity=<CABasicAnimation: 0xa32b4e0>; }; layer = <CALayer: 0xa32a060>>
)
self.subviewの最後のオブジェクト ( UIControl
) は、削除したいものです。そう
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
...
[self performSelector:@selector(removeOverlay) withObject:nil afterDelay:.01f];
}
- (void)removeOverlay
{
[[self.view.subviews lastObject] removeFromSuperview];
}
検索結果がまだない場合でも、常にいくつかのセルを表示するようにします。これは、通常のUITableViewDelegate/UITableViewDataSourceメソッドを使用して実行できます。元のテーブルビュー、検索テーブルビュー、およびダミーセルを含む検索テーブルビューを処理しているので注意してください。すべてのUITableViewDelegate/UITableViewDataSourceメソッドはこれを認識する必要があります。