Ошибка приложения в UIPopoverPresentationController, но нет явных popovers?
Мое приложение (только для iOS 8) было отклонено из-за сбоя при попытке IAP. Я пробовал почти все заклинания процесса покупки в сборке AdHoc, но не могу воспроизвести сбой. Глядя на журнал сбоев, прикрепленный командой обзора, я вижу очень странную трассировку стека в последнем обратном пути исключения. В результате сбоя используется UIPopoverController, однако мое приложение, хотя и универсальное, явно или неявно отображает всплывающие окна в любом месте. Кто-нибудь знает, что может вызвать активность, которая вызывает этот крах? Что может заставить мое приложение отображать popovers, когда команда обзора смотрит на него только?
Last Exception Backtrace:
0 CoreFoundation 0x186d52084 __exceptionPreprocess + 132
1 libobjc.A.dylib 0x1977a40e4 objc_exception_throw + 60
2 UIKit 0x18bc0aee0 -[UIPopoverPresentationController presentationTransitionWillBegin] + 2464
3 UIKit 0x18b7d27d8 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1324
4 UIKit 0x18b7d1310 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 212
5 UIKit 0x18b557388 _applyBlockToCFArrayCopiedToStack + 356
6 UIKit 0x18b4c8e4c _afterCACommitHandler + 532
7 CoreFoundation 0x186d0a388 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
8 CoreFoundation 0x186d07314 __CFRunLoopDoObservers + 360
9 CoreFoundation 0x186d076f4 __CFRunLoopRun + 836
10 CoreFoundation 0x186c35664 CFRunLoopRunSpecific + 396
11 GraphicsServices 0x18fd435a4 GSEventRunModal + 168
12 UIKit 0x18b53a984 UIApplicationMain + 1488
Ответы
Ответ 1
Не уверен, что это та же самая причина, что и исходный вопрос, но у меня есть такая же ошибка, и проблема заключалась в использовании UIAlertController с стилем ActionSheet, представляя, что он отлично работает на iPhone, но iPad требует, чтобы источник был установлен - fooobar.com/questions/42728/...
Ответ 2
Сначала вы должны проверить доступный UIPopoverPresentationController или нет.
NSArray *Items = [NSArray arrayWithObjects:emailBody,anImage, nil];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:Items applicationActivities:nil];
if ([UIPopoverPresentationController class] != nil) {
UIPopoverPresentationController *popover = activityController.popoverPresentationController;
if (popover)
{
popover.sourceView = sender;
//popover.sourceRect = sender.bounds;
popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
}
[self presentViewController:activityController animated:YES completion:NULL];