UIActivityViewController不显示在iPhone + iOS 8
问题描述:
我试图从OpenGL视图(使用libGDX/RoboVM)呈现UIActivityViewController,但我有混合结果。UIActivityViewController不显示在iPhone + iOS 8
它可以在iOS 7和iOS 8 iPad上正常工作,但在iOS 8 iPhone上,它只是暂停应用程序而不会发生任何事情。除了完成块从不触发外,调试日志中没有任何注释。这是代码:
UIActivityViewController controller = new UIActivityViewController(activityItems, null);
List<String> excludedTypes = new ArrayList<String>();
excludedTypes.add("UIActivityTypePrint");
excludedTypes.add("UIActivityTypeAssignToContact");
excludedTypes.add("UIActivityTypeAddToReadingList");
excludedTypes.add("UIActivityTypeAirDrop");
excludedTypes.add("UIActivityTypeCopyToPasteboard");
controller.setExcludedActivityTypes(excludedTypes);
IOSApplication iosApplication = (IOSApplication)Gdx.app;
// for iPad (https://groups.google.com/forum/#!topic/robovm/fiGDVf6AAsc)
int majorOsVersion = Integer.parseInt(System.getProperty("os.version").substring(0, System.getProperty("os.version").indexOf('.')));
if (majorOsVersion >= 8)
{
UIView sourceView = iosApplication.getUIViewController().getView();
if (width > 0 && height > 0)
{
UIView subView = new UIView(new CGRect(left, top, width, height));
sourceView.addSubview(subView);
sourceView = subView;
}
UIActivityViewControllerExtensions.getPopoverPresentationController(controller).setSourceView(sourceView);
}
iosApplication.getUIViewController().presentViewController(controller, true, null);
我已经验证,该方法被称为“主”线程(希望在libGDX这是同一个主线程在一个CocoaTouch应用程序)
答
NullPointerException异常这里:
UIActivityViewControllerExtensions.getPopoverPresentationController(controller).setSourceView(sourceView);
getPopoverPresentationController()
在iPhones上返回null,这在Objective-C域中不是问题。