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).

Другие вопросы по тегам