UIActivityViewController Print Dialog UI Глюки интерфейса (ошибки?)
У меня есть некоторые странные глюки интерфейса, использующие 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 PopOver имеет некоторые проблемы с переходом пользовательского интерфейса на iOS7. Новые параметры печати PopOver перемещаются в вид слева, перемещая ненасыщенный фон всего экрана. Лучше всего видно во втором видео.
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 PopOver и Print.
Так что это можно воспроизвести и с помощью простой демонстрации.
Среда: SDK 7.0, текущий общедоступный Xcode (по состоянию на 25.02.2014). Цели: iOS6 и iOS7.
Изменить 2/3:
Относительно 3-го выпуска я нашел это, так что об этом уже сообщалось: http://openradar.appspot.com/8668247
С уважением, Фредерик
1 ответ
Все три проблемы проверены на наличие ошибок Apple iOS.
1-й и 2-й видны в демонстрации, упомянутой выше. Третий даже с видимым приложением Google Browser (на iPad). Источником 3-й проблемы является сброс масштабирования UIWebView viewPrintFormatter во время всплывающего окна диалога (фактически внутренняя операция UIActivity prepare).