2014-10-09 64 views
2

我试图从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应用程序)

回答

0

NullPointerException异常这里:

UIActivityViewControllerExtensions.getPopoverPresentationController(controller).setSourceView(sourceView); 

getPopoverPresentationController()在iPhones上返回null,这在Objective-C域中不是问题。

相关问题