iOS 13.5.1:UIActivityViewController 未在 iPad 上显示

iOS 13.5.1: UIActivityViewController not showing on iPad

以下代码在 iOS 13.5.1 上的 iPhone 和 iOS 12.4.7 上的 iPad 上运行良好,但在触发时没有任何反应iOS 上的 iPad 13.5.1:

- (void)notificationFired:(NSNotification *)notification {
    if (notification != (id)[NSNull null] && [[notification name] isEqualToString:@"OpenActionSheet"]) {
        NSString *path = [notification userInfo][@"path"];
        
        printf("Received path: %s", path.UTF8String);

        NSURL *url = [NSURL fileURLWithPath:path];
        
        UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil];
        [controller setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
            printf("%s", "Share sheet closed");
            UnitySendMessage("ShareListener", "Complete", path.UTF8String);
        }];
        
        if (IDIOM == IPAD)
            controller.modalPresentationStyle = UIModalPresentationPopover

        [self.window.rootViewController presentViewController:controller animated:YES completion:nil];
        
        if (IDIOM == IPAD) {
            UIPopoverPresentationController *popover = controller.popoverPresentationController;
            popover.sourceView = self.window.rootViewController.view;
        }
    }
}

我也试过了

if ([controller respondsToSelector:@selector(popoverPresentationController)])
    controller.popoverPresentationController.sourceView = self.rootView;
        
[self.window.rootViewController presentViewController:controller animated:YES completion:nil];

而不是 IDIOM == IPAD 块,但结果相同。我错过了什么?

除了分配 sourceView,您还应该分配 sourceRect

喜欢

popover.sourceRect = CGRectMake(0, 0, 100, 100) // change the rect to the frame you want the view to appear

希望它能解决您的问题。在 iPad Pro(12.9 英寸)(第 4 代)XCode 11.5.

中测试