2014-04-28 1 views
0

У меня есть UIView со списком предметов. Когда я нажимаю на панель поиска, появляется клавиатура, а на оставшейся части экрана присутствует серый накладной.Оверлейная область остается на вершине после поиска в списке UIView

enter image description here

Когда я нажимаю на серой накладке клавиатура исчезает, однако область наложения остается на вершине и не исчезает. В чем причина этой проблемы? Как я могу это решить?

ответ

0

Проверьте это: -

написать в консоли: - давая точку останова в контроллере представления

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

Попробуйте использовать это:

[searchCon setActive:NO animated:YES]; 

где searchCon ваш UISearchDisplayController.

Надеюсь, это поможет