Сбои пользовательского интерфейса диалогового окна печати UIActivityViewController (баги?)
-
21-12-2019 - |
Вопрос
У меня есть несколько странных сбоев пользовательского интерфейса при использовании UIActivityViewController на iPad.
Сложно рассказать, поэтому вот два видео.Один показывает поведение iOS6, а другой - неисправный iOS7:iOS6: http://quick.as/govpsry7
iOS7: http://quick.as/qr7jtd8b
1 - й Выпуск:Стрелка немного отклонена от своего положения на iOS7 (по дизайну?).Обычная панель UINavigationBar с UIBarButtonItems.
Код для представления всплывающего окна (на iPad):
ActivityPopover = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[activityPopover presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
Здесь нет ничего особенного.Отправителем является UIBarButtonItem.
2 - й Выпуск:При выборе Print из всплывающего окна UIActivityViewController возникают некоторые проблемы с переходом пользовательского интерфейса в iOS7.Всплывающее окно "Новые параметры печати" переходит в режим просмотра слева, перемещая при этом ненасыщенный фон всего экрана.Лучше всего видно на 2-м видео.
3- й Выпуск:Как видно, при открытии диалогового окна Параметров печати содержимое UIWebView каким-то образом корректируется.Я не вижу причин для этого.
1-я и 2-я проблемы возникают даже при переходе к "about: blank".
Кто-нибудь знает что-нибудь об этих сбоях?Распространенные ошибки?
Редактировать:1-й и 2-й выглядят как Ошибки iOS7.Я попробовал SVWebViewController от Сэма Верметта и вставил свой тестовый код.
В SVWebViewController.m демонстрационной вставки:
@interface SVWebViewController () <UIWebViewDelegate>
@property (nonatomic, strong) UIBarButtonItem *backBarButtonItem;
@property (nonatomic, strong) UIBarButtonItem *forwardBarButtonItem;
@property (nonatomic, strong) UIBarButtonItem *refreshBarButtonItem;
@property (nonatomic, strong) UIBarButtonItem *stopBarButtonItem;
@property (nonatomic, strong) UIBarButtonItem *actionBarButtonItem;
@property (nonatomic, strong) UIPopoverController *popover; // added
Позже в файле, в самом низу, настройте:
- (void)actionButtonClicked:(id)sender {
NSArray *activities = @[[SVWebViewControllerActivitySafari new], [SVWebViewControllerActivityChrome new]];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:@[self.self.webView.request.URL, self.self.webView.viewPrintFormatter] applicationActivities:activities];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.popover = [[UIPopoverController alloc] initWithContentViewController:activityController];
[self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else {
[self presentViewController:activityController animated:YES completion:nil];
}
}
Это приводит к тем же сбоям пользовательского интерфейса при касании всплывающего окна Activity и значка печати.
Так что это можно воспроизвести и с помощью простой демонстрации.
Окружающая среда:SDK 7.0, текущий общедоступный Xcode (по состоянию на 25.02.2014).Целевые показатели:iOS6 и iOS7.
Правка 2/3:
Что касается 3-й проблемы, я нашел это, так что об этом уже сообщалось: http://openradar.appspot.com/8668247
С уважением, Фредерик
Решение
Проверено, что все три проблемы являются ошибками Apple iOS.
1-й и 2-й варианты видны на демо-версии, упомянутой выше.3-й - даже с видимым приложением Google Browser (на iPad).Источником 3-й проблемы является сброс масштабирования UIWebView viewPrintFormatter во время всплывающего диалогового окна (фактически внутренняя UIActivity prepareAction).