我遇到的问题是,当显示键盘时,自动放在我的UISearchDisplayController上的灰色叠加层并不总是完全覆盖桌面区域(您可以在下图中看到底部的白色)。这并不总是会发生,但它足够频繁,令人讨厌。有谁知道发生了什么?感谢。
答案 0 :(得分:1)
我认为这是Apple代码中的一个错误。在与UIPopoverControllers广泛合作之后,我发现在执行大小计算时,有很多情况下,popover会对是否有导航栏感到困惑。
我相信,如果你测量白盒的高度,你会发现它正好是37像素:弹出窗口中导航栏的高度。 (弹出窗口中的导航栏与大多数导航控制器一样高44像素,因为它们嵌入到弹出框的边框中。)
如果您能够访问灰色叠加层并手动调整大小,则可以考虑导航栏的高度或缺少导航栏的高度。不幸的是,由于叠加层是由搜索栏控制的,因此您处于一种绑定状态。
我的建议是尝试让popover在显示或调整大小后重新计算其内容的大小。当动态调整包含导航栏的UIPopover时,我会使用此模式:
// UIViewController subclass with a navigation bar which is displayed in a popover
// _popoverController is a (unretained) pointer to the UIPopoverController in which this view controller is displayed
- (void)viewDidLoad
{
[self.view sizeToFit];
CGSize newSize; // Dynamically computed based on popover contents
self.contentSizeForViewInPopover = newSize;
newSize.height += 37; // Account for popover navigation bar
[_popoverController setPopoverContentSize:size animated:YES];
}
我不知道这个答案有多大帮助,但我希望它至少可以帮助你朝着正确的方向前进。
答案 1 :(得分:1)
请看这篇文章:http://www.cannonade.net/blog.php?id=1498
他讨论了这个问题,提供了一个(自己称之为)丑陋的解决方法,但也说明了如何修复它!