Сбой UIActivityController при нажатии на приложение для сообщений

#objective-c #share #message #uiactivitycontroller

#objective-c #Поделиться #Сообщение #uiactivitycontroller

Вопрос:

Я пишу приложение для iOS в коде objective C, и это метод действия, когда пользователь нажимает на кнопку на панели инструментов

 - (void)tappedInToolbar:(MyToolbar *)toolbar shareButton:(UIButton *)button {
   
     UIActivityViewController *activityController = [[UIActivityViewController alloc]
                                      initWithActivityItems:@[self, document.fileURL] 
                                      applicationActivities:nil];
      
     activityController.modalPresentationStyle = UIModalPresentationPopover;
    
     [self presentViewController:activityController animated:YES completion:nil];
    
     UIPopoverPresentationController *popController = [activityController popoverPresentationController];
      
     popController.permittedArrowDirections = UIPopoverArrowDirectionAny;
      
     popController.sourceView = button;
     
 }
  

Приложение может успешно представить контроллер активности
и я могу выбрать множество системных приложений для совместного использования моих файлов, таких как почта «Airdrop», заметки и т.д.; Однако Всякий раз, когда я нажимаю на сообщения, чтобы поделиться файлами, приложение завершает работу с этой трассировкой стека.

Если кто-нибудь знает, как исправить эту проблему, пожалуйста, поделитесь, это было бы действительно оценено.

 1   
IOSurface
IOSurfaceClientGetPixelFormat   0
2   
QuartzCore
CA::CG::IOSurfaceContext::create_delegate(CGIOSurfaceContextInfo const*, __CFDictionary const*)   544
3   
CoreGraphics
CGIOSurfaceContextCreate   212
4   
BaseBoardUI
BSUISurfaceWithColorSpaceAndDrawBlock   536
5   
SpringBoardFoundation
SBFCreateIOSurfaceForImage   1092
6   
ChatKit
-[CKRemoteItemForSending _setPreviewUIImage:]   80
7   
ChatKit
__46-[CKRemoteItemForSending beginPreviewCreation]_block_invoke   208
8   
Foundation
__NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__   20
9   
Foundation
-[NSBlockOperation main]   100
10  
Foundation
__NSOPERATION_IS_INVOKING_MAIN__   20
11  
Foundation
-[NSOperation start]   736
12  
Foundation
__NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__   20
13  
Foundation
__NSOQSchedule_f   180
14  
libdispatch.dylib
_dispatch_block_async_invoke2   140
15  
libdispatch.dylib
_dispatch_client_callout   16
  

Комментарии:

1. @matt спасибо за комментарий, наличие self или нет не делает разницы. Я удалил его, и он все еще выходит из строя.

2. Я не могу воспроизвести это. Происходит ли это в конкретной версии iOS? Происходит ли это только на определенном устройстве? UIPopoverPresentationController *popController Необходимо ли для возникновения сбоя? Можете ли вы поделиться минимальным образцом проекта, который может повторить это?

3. Почему вы ставите self на свой initWithActivityItems ? Поддерживаете ли вы UIActivityItemSource свой контроллер просмотра? Если нет, вам следует удалить его.

4. Вы используете UIButton , но из текста я ожидаю, что это будет UIBarButtonItem ? Просто чтобы подтвердить, что вы представляете из UIButton или UIBarButtonItem?