UISearchDisplayController серое наложение не полностью покрывает таблицу - PullRequest
2 голосов
/ 06 июля 2011

У меня проблема с тем, что серое наложение, которое автоматически накладывается на мой UISearchDisplayController при отображении клавиатуры, не всегда полностью покрывает область таблицы (вы можете увидеть белый цвет внизу на рисунке ниже). Это не всегда происходит, но достаточно часто, что раздражает. Кто-нибудь знает, что происходит? Спасибо.

overlay issue

Ответы [ 2 ]

1 голос
/ 02 августа 2012

Посмотрите в этом посте: http://www.cannonade.net/blog.php?id=1498

Он обсуждает проблему, предлагая (названный сам) уродливый обходной путь, но также говорит, как ее исправить!

1 голос
/ 06 июля 2011

Я считаю, что это ошибка в коде Apple. Тщательно поработав с UIPopoverControllers, я обнаружил, что во многих случаях всплывающее окно путается в том, есть ли у него панель навигации при выполнении расчетов размеров.

Я уверен, что если вы измерите высоту белого поля, вы обнаружите, что оно ровно 37 пикселей: высота панели навигации в всплывающем окне. (Панели навигации в всплывающих окнах не имеют высоту 44 пикселя, как большинство контроллеров навигации, поскольку они встроены в границу всплывающего окна.)

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

Мое предложение состоит в том, чтобы попытаться заставить поповер пересчитать размер его содержимого после его появления или изменения размера. Я использую этот шаблон при динамическом изменении размера 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];
}

Я не знаю, насколько этот ответ поможет, но я надеюсь, что он, по крайней мере, даст вам толчок в правильном направлении.

...