gpt4 book ai didi

ios - 通过 UIActivityViewController 将图像/视频共享到其他应用程序在 iOS 中显示共享项目两次

转载 作者:可可西里 更新时间:2023-11-01 03:58:56 25 4
gpt4 key购买 nike

我正在尝试使用 UIActivityViewController 将一些图像和视频分享到其他应用程序(如 FB、WhatsApp)。我对 UIActivityItemProvider 进行了子分类,在调用 -(id)item 方法时,我正在处理图像/视频并保存在文档目录中。然后我将文件路径作为 NSURLs 返回。我的问题是我找不到同时发送多个文件 URL 的方法。

以下是我从 -(id)item 方法返回 url 所采用的方法;

  1. 作为 NSURL 对象的 NSArray。不工作。当目标应用弹出窗口出现时,它始终是空的。
  2. 作为一个 NSDictionary,其中 NSURL 对象是值,键可以是任何东西。问题:目标应用程序弹出窗口显示所有项目,但两次!我对字典进行了很多试验,但找不到解决这个问题的方法。

简单地从 -(id)item 方法返回一个 NSURL 对象对于单个文件工作正常。但是,我必须共享多个项目。数组不起作用,字典正在复制共享项。

有人可以告诉我我做错了什么吗?


更新 1:

这就是我显示 UIActivityViewController 的方式。

CustomItemProvider *provider = [[CustomItemProvider alloc] initWithPlaceholderItem:[UIImage imageNamed:@"ios-59.png"]];

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[provider] applicationActivities:nil];

activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError)
{
if(completed)
{
NSLog(@"Activity Completed");
}
else
{
NSLog(@"Activity Cancelled");
}
};
[self presentViewController:activityViewController animated:YES completion:^{}];

UIActivityItemProvider 实现如下所示;这些 URL 有效并且在这些位置有图片/视频。

@interface CustomItemProvider : UIActivityItemProvider

@end

@implementation CustomItemProvider
- (id)item
{
NSURL *url1 = [NSURL fileURLWithPath:@"file one url"];
NSURL *url2 = [NSURL fileURLWithPath:@"file two url"];
NSURL *url3 = [NSURL fileURLWithPath:@"file three url"];

return @{@"item1":url1, @"item2":url2, @"item3":url3}; //As NSDictionary. This causes 6 items to be shared; all files twice.

//return @[url1, url2, url3]; //As NSArray
}
@end

更新 2:

链接的问题不同。我不想将文件作为 initWithActivityItems: 的参数直接发送到 UIActivityViewController。原因是可能有多个视频文件,这会导致内存警告和崩溃。此外,我将在将文件发送到目标应用程序之前对其进行操作(在 -(id)item 方法中,我未在此处显示),因此我需要 UIActivityItemProvider在后台处理文件。

最佳答案

与其他应用分享图像:Swift 3 代码-

    let image = UIImage(named: "yourimage")
let objectsToShare = [image]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
present(activityVC, animated: true, completion: nil)

关于ios - 通过 UIActivityViewController 将图像/视频共享到其他应用程序在 iOS 中显示共享项目两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38613294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com