搜索列表UIView后,叠加区域保持在顶部

时间:2014-04-28 11:55:46

标签: ios iphone uisearchbar uisearchdisplaycontroller

我有一个带有项目列表的UIView。当我点击搜索栏时,键盘出现,屏幕的其余部分包含灰色叠加层。

enter image description here

当我点击灰色覆盖图时,键盘会消失,但覆盖区域会保持在顶部并且不会消失。这个问题的根源是什么?我该如何解决?

2 个答案:

答案 0 :(得分: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>>
)

self.subview中的最后一个对象(UIControl)是我们要删除的内容。所以

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

- (void)removeOverlay
{
    [[self.view.subviews lastObject] removeFromSuperview];
}

答案 1 :(得分:0)

尝试使用:

[searchCon setActive:NO animated:YES];

其中searchCon是您的UISearchDisplayController。

希望有所帮助