Удалить прозрачный оверлей UISearchBar - PullRequest
1 голос
/ 16 декабря 2009

Как удалить прозрачное черное наложение, которое анимируется поверх исходного представления таблицы при активации UISearchBar?

Можете ли вы как-нибудь добраться до ответственного UIView и установить его альфа в 0?

Или есть способ отобразить пустой searchResultsTableView поверх черного наложения?

Ответы [ 2 ]

6 голосов
/ 23 января 2013
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>>
)

Последний объект (UIControl) в self.subview - это то, что мы хотим удалить. Так

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
...
    [self performSelector:@selector(removeOverlay) withObject:nil afterDelay:.01f];
}

- (void)removeOverlay
{
    [[self.view.subviews lastObject] removeFromSuperview];
}
0 голосов
/ 16 декабря 2009

Всегда отображать некоторые ячейки, даже если результатов поиска пока нет. Вы можете сделать это с помощью обычных методов UITableViewDelegate / UITableViewDataSource. Просто будьте осторожны, потому что вы имеете дело с исходным табличным представлением, табличным поиском и табличным поиском с фиктивными ячейками в нем, и все методы UITableViewDelegate / UITableViewDataSource должны знать об этом.

...