Ipad UISearchDisplayController灰色覆盖未完全覆盖表

Ipad UISearchDisplayController灰色覆盖未完全覆盖表,ipad,uikit,uisearchdisplaycontroller,Ipad,Uikit,Uisearchdisplaycontroller,我遇到了一个问题,当显示键盘时,自动覆盖在我的UISearchDisplayController上的灰色覆盖层并不总是完全覆盖桌子区域(您可以在下图底部看到白色)。这种情况并不总是发生,但它的频繁程度足以让人恼火。有人知道发生了什么吗?谢谢 我认为这是苹果公司代码中的一个缺陷。在与UIPopOvercontroller广泛合作后,我发现在很多情况下,popover在执行大小计算时会混淆是否有导航栏 我相信,如果你测量白色框的高度,你会发现它正好是37像素:popover中导航栏的高度。(popo

我遇到了一个问题,当显示键盘时,自动覆盖在我的UISearchDisplayController上的灰色覆盖层并不总是完全覆盖桌子区域(您可以在下图底部看到白色)。这种情况并不总是发生,但它的频繁程度足以让人恼火。有人知道发生了什么吗?谢谢


我认为这是苹果公司代码中的一个缺陷。在与UIPopOvercontroller广泛合作后,我发现在很多情况下,popover在执行大小计算时会混淆是否有导航栏

我相信,如果你测量白色框的高度,你会发现它正好是37像素:popover中导航栏的高度。(popover中的导航条不像大多数导航控制器那样高44像素,因为它们嵌入到popover的边框中。)

如果您能够访问灰色覆盖并手动调整其大小,您可以考虑导航栏的高度或缺少导航栏。不幸的是,由于覆盖层是由搜索栏控制的,所以您有点不知所措

我的建议是尝试让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];
}

我不知道这个答案会有多大帮助,但我希望它至少能让你朝着正确的方向前进。

看看这篇文章:

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