1

当您激活 UISearchBar 时,如何删除在源表视图上动画的透明黑色覆盖?

你能以某种方式找到负责的 UIView 并将它的 alpha 设置为 0 吗?

或者有没有办法在黑色覆盖层上显示一个空的 searchResultsTableView?

4

2 回答 2

6
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];
}
于 2013-01-22T21:35:19.670 回答
0

始终让它显示一些单元格,即使搜索还没有任何结果。您可以通过通常的 UITableViewDelegate/UITableViewDataSource 方法来完成此操作。请小心,因为您现在正在处理原始表格视图、搜索表格视图和带有虚拟单元格的搜索表格视图,并且所有 UITableViewDelegate/UITableViewDataSource 方法都需要注意这一点。

于 2009-12-16T05:19:01.440 回答