2014-09-19 1 views
10

Я уже рассмотрел связанные вопросы here и here, и я внедрил предлагаемые ответы безрезультатно.Настоящий UIActivityViewController-LaunchServices: invalidationHandler называется

У меня есть UIBarButtonItem на UIToolbar, с соединением для отправки действий в btnTBAction_touch:

В заголовке класса в ViewController, я есть:

@property (nonatomic, strong) UIActivityViewController *activityViewController; 

Родственный метод в реализации класса:

- (IBAction)btnTBAction_touch:(id)sender { 
    NSString *string = @"Some string"; 
    NSURL *url = [[NSURL alloc] initWithString:@"http://www.google.com"]; 
    UIImage *image = [UIImage imageNamed:@"default.png"]; 
    self.activityViewController = [[UIActivityViewController alloc] 
     initWithActivityItems:@[string, url, image] applicationActivities:nil]; 

    if ([self.activityViewController respondsToSelector:@selector(popoverPresentationController)]) 
    { 
     UIPopoverPresentationController *presentationController = [self.activityViewController 
      popoverPresentationController]; 
     presentationController.sourceView = sender; 
    } 

    [self presentViewController:self.activityViewController animated:YES completion:nil]; 
} 

При работе в режиме отладки на физическом устройстве, когда я касаюсь кнопки, вызывающей вышеуказанный метод, я получаю следующее в d ebug консоль

2014-09-19 09:43:31.635 TestApp[1878:237873] LaunchServices: invalidationHandler called 
2014-09-19 09:43:31.644 TestApp[1878:237814] LaunchServices: invalidationHandler called 

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

Кроме того, я пытался несколько перестановок выше способа использования этих линий:

presentationController.sourceView = self.view; 

presentationController.sourceRect = self.view.frame; 

Ни одна из которых помогли решить эту проблему.

  • Я использую Xcode V6.0.1
  • Deployment Target
  • мое приложение является 7,0 для iPhone только
  • Тестирование на iPhone 5s под управлением IOS 8,0
  • код все в Objective-C
+0

Такая же проблема. Решения, предложенные в http://stackoverflow.com/questions/25192313/sharing-via-uiactivityviewcontroller-to-twitter-facebook-etc-causing-crash, не работали (sourceView или sourceRect). – loretoparisi

+0

Такая же проблема здесь – Praksha

ответ

5

Если ваше целевое целевое устройство для развития - это iPhone, вы не должны беспокоиться об этом сообщении. Похоже, это ошибка от Apple. Глядя на форумы разработчиков: «В этом сообщении журнала не указано никаких ошибок с вашей стороны».

См: https://devforums.apple.com/message/1049415#1049415 (возможно, потребует от вас входа в систему)

+0

ссылка? с ссылкой я бы отметил это как ответ – chriszumberge

+0

@chriszumberge Я отредактировал свой ответ и включил ссылку – Eric

2

Аналогичный вопрос здесь.

Я использую UIDocumentInteractionController, а не UIActivityViewController, поэтому нет обработчика sourceView или sourceRect.

В заголовке:

UIDocumentInteractionController *docInteractionController; 

В .m:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 

self.docInteractionController.delegate = self; 
self.docInteractionController.UTI = @"com.adobe.pdf"; 
//UIBarButtonItem *element is an element in my toolbar 
[self.docInteractionController presentOptionsMenuFromBarButtonItem:element animated:YES]; 

На консоли я вижу следующее предупреждение:

Unknown activity items supplied: (
    { 
    "com.adobe.pdf" = <25504446 (and then what looks like the rest of the pdf I tried to open)>; 
}, 
"<UIPrintInfo: 0x17b47ca0>" 
) 
2014-10-14 21:11:21.661 iFly[288:29569] LaunchServices: invalidationHandler called 

И в моей официальной версии App Store моего приложения, приложение падает. Когда я компилирую и запускаю на своем iPad, он просто дает предупреждение.

я могу обойти «Неизвестные предметы деятельности», поставляемая часть предупреждения с помощью presentOpenInMenuFromBarButtonItem вместо presentOptionsMenuFromBarButtonItem для вызова UIDocumentInteractionController, но «LaunchServices» предупреждение по-прежнему происходит.

iPad версия 8.0.2. Xcode версии 6.0.1, цель развертывания 6.0 (также протестирована с целью развертывания 8.0). Все цели-с.

+0

У меня такая же проблема. Кроме того, при отмене параметров меню моя кнопка действия, похоже, не включена. Не уверен, что это связано с этими ошибками. Может ли кто-нибудь ответить на это? – Shwethascar

0

Это то, что работает для меня. Нет ошибок. Мне пришлось избавиться от инструкции if, которая называется «isAvailableForServiceType:». Надеюсь, это сработает для вас!

SLComposeViewController *tweetSheet = [SLComposeViewController 
              composeViewControllerForServiceType:SLServiceTypeTwitter]; 

    [tweetSheet setInitialText:@"Great fun to learn iOS programming at appcoda.com!"]; 
    [self presentViewController:tweetSheet animated:YES completion:nil]; 

    if ([tweetSheet respondsToSelector:@selector(popoverPresentationController)]) 
    { 
     // iOS 8+ 
     UIPopoverPresentationController *presentationController = [tweetSheet popoverPresentationController]; 

     presentationController.sourceView = sender; // if button or change to self.view. 
    } 
+0

как насчет 'UIDocumentInteractionController'? 'UIDocumentInteractionController' не имеет атрибута' popoverPresentationController' – TomSawyer

 Смежные вопросы

  • Нет связанных вопросов^_^