Подтвердить что ты не робот

Компиляция против 5.1 SDK заставляет новый UIPopoverController "скользить в" презентацию popovers - как отключить?

Компиляция моего iPad-приложения с 5.1 SDK (версия выпуска) заставляет UIPopoverController показывать себя с помощью нового "слайда" из левой презентации. Это полностью нарушает мою презентацию popover, которая опиралась на заголовок "черного" стиля и определенную высоту. Я пробовал установить presentsWithGesture на NO, но это только кажется, что отключает жестов салфетки и не останавливает стиль презентации.

Это же приложение, не будучи перекомпилированным, но работает на iOS 5.1, использует старый стиль презентации popover. Поэтому я знаю, что iOS 5.1 по-прежнему поддерживает метод обратной совместимости. Как я могу выбрать, чтобы активировать старую презентацию popover?

Это действительно важно для моего приложения, к сожалению.

В противном случае, есть ли способ получить заголовок "черного" стиля для новых popovers?


Хотя у меня есть UISplitViewController в моем приложении, он не несет ответственности за показ popover. Вместо этого я использую этот код:

   [self.popoverController presentPopoverFromRect:ipadButtonMenu.frame
                                           inView:self.view
                         permittedArrowDirections:UIPopoverArrowDirectionUp
                                         animated:YES];

Этот вопрос является перекрестным сообщением с форума разработчиков Apple здесь. Я надеюсь, что у кого-то есть ответ.


Ожидаемая презентация: enter image description here

Презентация после компиляции под iOS 5.1 SDK: enter image description here

4b9b3361

Ответ 1

Это изменение кажется плохо продуманным. Конечно, ребята, мы разбиваем что-нибудь в подробном представлении, которое использует салфетки. Отлично!

Чтобы ответить на вопрос "вернуть черный", если речь идет только о верхнем значении навигационного цвета, вы можете использовать прокси-сервер внешнего вида. Например:

[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];

Прокси-сервер внешнего вида может быть установлен очень конкретно, если необходимо; он имеет модель контейнеров. Там есть очень хорошее видео WWDC.

Относительно просто возврата к старому поведению с новым компилятором, честно говоря, я тоже хотел бы узнать. Новое поведение также нарушает листы действий в главном представлении; ранее, когда представление мастера было представлено в popover, они бы поступили правильно. Теперь это ошибка утверждения.

Ответ 2

Хорошо, у меня была такая же проблема, это может помочь, он удаляет черный фон, который доходит до нижней части экрана....

вызовите это после отображения вашего popoup...

- (void)removeInnerShadow {
    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
    for (UIView *windowSubView in window.subviews) {

            if ([NSStringFromClass([windowSubView class]) isEqualToString:@"UIDimmingView"]) {
            for (UIView *dimmingViewSubviews in windowSubView.subviews) {

                for (UIView *popoverSubview in dimmingViewSubviews.subviews) {

                    popoverSubview.layer.shadowOpacity=0;
                    popoverSubview.layer.masksToBounds = NO;

                     if([NSStringFromClass([popoverSubview class]) isEqualToString:@"_UIPopoverSlidingChromeView"])
                     {

                         popoverSubview.layer.shadowOpacity=0;
                         popoverSubview.layer.masksToBounds = NO;

                     }
                }
            }
        }
    }
}

Ответ 3

Можно вернуться! - с MGSplitViewController. Это дает вам аналогичный API для iOS-управления, но со старым popover и намного большим контролем.

Ответ 4

с iOS 5.1

Из документов:

В iOS 5.1 класс UISplitViewController использует стиль слайдов при представлении левого представления (ранее рассматриваемого только в Mail). Этот стиль используется, когда презентация инициируется либо существующим элементом панели, предоставляемым методами делегата, либо жестом салфетки в правильном представлении. Для получения такого поведения не требуется дополнительное внедрение API, и все существующие API-интерфейсы, включая экземпляр экземпляра UIPopoverController, предоставленный делегатом, будут продолжать работать по-прежнему.

небольшая работа вокруг здесь →