UISearchDisplayController灰色叠加不完全覆盖表

时间:2011-07-06 04:48:21

标签: ipad uikit uisearchdisplaycontroller

我遇到的问题是,当显示键盘时,自动放在我的UISearchDisplayController上的灰色叠加层并不总是完全覆盖桌面区域(您可以在下图中看到底部的白色)。这并不总是会发生,但它足够频繁,令人讨厌。有谁知道发生了什么?感谢。

overlay issue

2 个答案:

答案 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

他讨论了这个问题,提供了一个(自己称之为)丑陋的解决方法,但也说明了如何修复它!