我正在使用UIActivityViewController在ios 6和我的代码上共享图像
UIImage *shareImage = [UIImage imageNamed:@"myImage.png"];
// Init array
NSMutableArray *items = [NSMutableArray new];
[items addObject:@""];
[items addObject:shareImage];
// Add image to paste board
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.persistent = YES;
pasteboard.image = shareImage;
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
//This is an array of excluded activities to appear on the UIActivityViewController
activityVC.excludedActivityTypes = @[UIActivityTypePostToWeibo,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityVC animated:TRUE completion:nil];
Run Code Online (Sandbox Code Playgroud)
一切正常但无法将shareImage粘贴到iMessage.我不知道为什么?谢谢您帮忙!
显然iOS8默认情况下会向iOS8中的活动视图添加"iCloud Photo Sharing"活动,但我没有找到任何有用的文档,特别是如何明确删除它(进入"更多"选项允许用户切换显示/隐藏它,但对于我们的应用程序,我们希望完全禁止此选项).
有没有人想过如何禁用它?任何输入将不胜感激.谢谢!


我正在使用iOS 8中的UIActivityViewController.我已经构建了一个自定义的Pinterest共享机制,它在iOS 7中运行得非常好 - 特别是它将一个图像上传到我的服务器,然后创建一个带有该图像的Pin和一个我的URL指定.这是所需的功能.
现在,在iOS 8的,Pinterest的实施了自己的共享资源,它接受任何一个URL 或图像.如果活动项目列表中包含URL,则共享者弹出并询问用户他/她想要从该URL的页面共享哪个图像,并完全忽略同样位于活动项目列表中的图像.如果没有URL,只有图像,则上传的图钉不包含URL.
为了解决这个问题,我需要做以下事情之一:
或者,如果一切都失败了,这将是有用的,至少能够检测,如果用户选择了在他们的列表中显示Pinterest的的共享者.
有谁知道有没有办法实现这些东西?
在我的应用程序中,我使用TTOpenInAppActivity在UIActivityController中插入"Open in"动作.里面它的工作原理如下:
一些视图控制器呈现UIActivityController,内置TTOpenInActivity.
-(void)openWithAction
{
NSURL *fileURL = SOME_URL;
CGRect rect = SOME_RECT;
TTOpenInAppActivity *openInAppActivity = [[TTOpenInAppActivity alloc] initWithView:self.view andRect:rect];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[fileURL] applicationActivities:@[openInAppActivity]];
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
// Store reference to superview (UIActionSheet) to allow dismissal
openInAppActivity.superViewController = activityViewController;
// Show UIActivityViewController
[self presentViewController:activityViewController animated:YES completion:NULL];
} else {
// code for iPad, irrelevant
}
}
Run Code Online (Sandbox Code Playgroud)
当用户点击"打开"按钮时,将触发以下方法:
- (void)performActivity
{
if(!self.superViewController){
[self activityDidFinish:YES];
return;
}
// Dismiss activity view
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
// iPhone dismiss UIActivityViewController
[self.superViewController …Run Code Online (Sandbox Code Playgroud) ios uiactivity uiactivityviewcontroller ios8 completion-block
我遇到了大多数人在试图UIActivityViewController在iPad上呈现时所面临的情况; 它崩溃了:
Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc4f2d87d00>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
- (void)shareLeaflet
{
NSString *forwardedString = [[NSString alloc] initWithFormat:@"Check out this leaflet\n\n %@ \n\nself.theURLToShare];
UIActivityViewController *activityViewController = nil;
if (IDIOM == IPAD)
{
NSLog(@"iPad");
activityViewController.popoverPresentationController.sourceView = self.view;
// activityViewController.popoverPresentationController.sourceRect = self.frame;
[self presentViewController:activityViewController
animated:YES
completion:nil];
}
else
{
NSLog(@"iPhone");
activityViewController = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:forwardedString, nil] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从共享选项中删除我自己的应用程序共享扩展。我在网上找不到任何关于此的文档。任何帮助,将不胜感激。
这是我到目前为止:
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList,"com.Final.Giftr.Giftr-ShareExtension"]
Run Code Online (Sandbox Code Playgroud)
空投和添加到阅读列表按预期工作。
目标是将以下条件更新为Swift 2.2语法,该语法建议使用#selector or explicitly constructing a Selector.
if activityViewController.respondsToSelector("popoverPresentationController") {
}
Run Code Online (Sandbox Code Playgroud)
但是,使用以下作为替换失败并生成错误说 Argument of #selector cannot refer to a property
if activityViewController.respondsToSelector(#selector(popoverPresentationController)) {
}
Run Code Online (Sandbox Code Playgroud)
实施此检查的正确方法是#selector什么?
当用户仅从iOS 11中的活动控制器中选择"复制"时,该URL将重复.它在iOS 10上正常运行
使用以下代码
@IBAction func shareButtonPressed() {
guard let url = URL(string: "http://google.com") else { return }
let shareText = "Share Text!"
let items: [Any] = [shareText, url]
let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
将共享文本提供为:
Share Text!
http://google.comhttp://google.com
Run Code Online (Sandbox Code Playgroud) 我正在尝试与我共享我的应用程序URL,UIActivityViewController这是我的代码:
let items = [URL(string: "https://itunes.apple.com/de/app/idxxxxxxxxx")!]
let ac = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(ac, animated: true)
Run Code Online (Sandbox Code Playgroud)
应用程序URL在浏览器上运行良好。但在 iPhone 上崩溃。
这是我在控制台中获得的日志:
ACAccountStore:[66A6F31E] 无法保存帐户。帐户 = | error = Error Domain=com.apple.accounts Code=7 “该应用程序无权访问 iTunes Store 帐户” UserInfo={NSLocalizedDescription=该应用程序无权访问 iTunes Store 帐户}
[accounts] ACAccountStore:无法创建本地帐户。error = Error Domain=com.apple.accounts Code=7 “该应用程序无权访问 iTunes Store 帐户” UserInfo={NSLocalizedDescription=该应用程序无权访问 iTunes Store 帐户}
我在通过 iOS 共享表将图像共享到 Instagram 时遇到问题。我需要通过 URL 将图像共享到本地文件,因为我希望图像在共享时以某种方式命名,这是我发现我可以做到的唯一方法。代码是:
//This saves the image into the local temp directory and returns the file url
saveImageForSharing(image: image!) {(tempUrl) in
if tempUrl != nil {
let objectsToShare = [tempUrl!]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
self.present(activityVC, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
当 UIActivityViewController 出现时,您可以成功地将图像分享到所有可用的服务(包括 Facebook、电子邮件、Twitter 等),除了 Instagram。分享到Instagram时,弹出以下错误:

为 UIActivityViewController 的 completionWithItemsHandler 设置完成处理程序,'success' 参数返回为 false,但错误对象为 nil,因此没有关于出错的信息。
直接共享一个 UIImage 是没有问题的。保存到不同的 URL 或更改文件名时也是如此。
任何想法在这里可能发生的事情,或者我如何在设置项目名称的同时成功共享图像?
编辑:我在尝试通过其 url 共享视频时也遇到了这个问题。该视频仅存储在照片库中,我无法让 Instagram 接受它,即使从照片应用程序共享时它共享得非常好!此外,我在输出控制台中收到一条消息,显示“无法为 URL: ssue 沙箱令牌”。有什么建议吗?
谢谢!