Компиляция против 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]()
Ответы
Ответ 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, предоставленный делегатом, будут продолжать работать по-прежнему.
небольшая работа вокруг здесь →