标签: uiactivity

如何向UIActivityViewController添加自定义按钮?

UIActivity在ios7中使用.只需几行代码即可正常工作.现在我想添加Instagram分享按钮.有没有办法将自定义按钮添加到操作表?

这就是我创建的方式UIActivityViewController:

NSString *textToShare = self.navigationItem.title;    
NSArray *itemsToShare = @[textToShare, [imagesArray objectAtIndex:afImgViewer.currentImage]];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,    UIActivityTypeAssignToContact]; //or whichever you don't need
[self presentViewController:activityVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

ios uiactivity uiactivityviewcontroller

6
推荐指数
1
解决办法
2万
查看次数

在UIActivityItemProvider活动期间显示进度指示器

我有一个UIActivityViewController允许用户将他们创建的图像分享到几种活动类型之一(Facebook,Twitter,保存到相机胶卷,打印等).

由于我希望图像以不同的质量水平保存/发送,具体取决于活动(打印的高分辨率,推特的低分辨率),我使用自定义UIActivityItemProvider(duh)提供图像.

渲染高分辨率版本需要一些时间,所以我想在它正在做它的事情时显示一个活动指示器.实际上,苹果文档提到了这样做.

但我似乎无法找出"正确"的地方来显示我的进度指示器...他们应该去哪里?

更新:- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType方法中尝试以下内容:

[self performSelectorOnMainThread:@selector(startSpinnerWithMessage:) withObject:message waitUntilDone:YES];

self.shareImage = [self.delegate imageForActivityOfType:activityType]; // code that actually generates the image; takes a while.

[self performSelectorOnMainThread:@selector(endSpinner) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)

......不做这个工作.当我点击活动按钮时,UI会在生成图像时冻结,然后当它完成时,我会看到微调器一瞬间然后消失.

我认为endSpinner调用的定位是有道理的......然而,似乎startSpinner调用需要去其他地方.不知道该怎么做.

objective-c ios uiactivity uiactivityviewcontroller

6
推荐指数
1
解决办法
792
查看次数

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

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

以下是我从 - (id)item方法返回网址的方法;

  1. 作为一个NSArrayNSURL对象.什么都不行.当目标应用程序弹出窗口出现时,它始终为空.
  2. 作为一个NSDictionary,其中NSURL对象是值,键可以是任何东西.问题:目标应用程序弹出窗口显示所有项目,但是TWICE!我经常尝试字典,但找不到解决这个问题的方法.

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

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


更新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:^{}];
Run Code Online (Sandbox Code Playgroud)

UIActivityItemProvider实现如下所示; 网址有效,并且这些位置有图片/视频.

@interface CustomItemProvider : UIActivityItemProvider

@end

@implementation CustomItemProvider …
Run Code Online (Sandbox Code Playgroud)

share objective-c ios uiactivity uiactivityviewcontroller

6
推荐指数
1
解决办法
1341
查看次数

我应该从UIActivity activityImage返回什么UIImage?

我创建了一个UIActivity的子类,以在我的应用程序中的活动表上显示自定义活动.但是我不能让它显示我的图标.

我尝试了一些典型图标尺寸的不同图像,例如:

- (UIImage *)activityImage { 
    return [UIImage imageNamed:@"my_app_icon.png"]; 
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个灰色方块,我的图标根本没有显示.

编辑:真正的问题是我的XCode文档已经过时,所以我没有最大图像大小非常有限的信息.

iphone objective-c ipad ios uiactivity

5
推荐指数
1
解决办法
4104
查看次数

覆盖由内置UIActivity类型执行的活动

是否可以覆盖由UIActivityViewController使用的内置UIActivity类型执行的活动?

例如,我希望Facebook活动使用我自己的自定义视图而不是内置视图.我知道您可以将UIActivity子类化为自己的应用程序特定活动,但是您是否始终坚持内置的默认行为?

ios uiactivity uiactivityviewcontroller

5
推荐指数
1
解决办法
1389
查看次数

UIActivity 和 UIActivityViewController 的神秘内存泄漏

我在 iOS 上使用 Swift 时遇到了内存泄漏问题。

\n\n

这是一个精简的可运行示例 \xe2\x80\x94,您可以点击屏幕来显示共享表,并且BadActivity每次都会泄漏。

\n\n
import UIKit\n\nclass ViewController: UIViewController {\n    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {\n        let activity = ShareController(activityItems: [""],  applicationActivities: [BadActivity(), GoodActivity()])\n        self.showViewController(activity, sender: nil)\n    }\n}\n\nclass ShareController: UIActivityViewController {\n    deinit { print("ShareController deinit.") }\n}\n\nclass GoodActivity: UIActivity {\n    override func activityTitle() -> String { return "Good" }\n    deinit { print("Good deinit. This is printed.") }\n}\n\nclass BadActivity: UIActivity {\n    override func activityTitle() -> String { return "Bad" }\n    deinit { print("Bad deinit. …
Run Code Online (Sandbox Code Playgroud)

memory memory-leaks ios uiactivity swift

5
推荐指数
0
解决办法
465
查看次数

显示使用 SFSafariviewController 进行打印的打印活动按钮

在 sfsafariviewcontroller 屏幕中,共享按钮仅显示没有打印选项的默认活动选项,但我想仅显示打印活动选项。

有委托方法返回活动。我想返回 UIPrintActivity 选项。

func safariViewController(控制器:SFSafariViewController,activityItemsForURL URL:NSURL,标题:字符串?) - > [UIActivity]

ios uiactivity sfsafariviewcontroller

5
推荐指数
0
解决办法
399
查看次数

UIActivityViewController在特定操作中使用项目

我有一个UIActivityViewController,我想让它拥有safari所做的所有动作以及更多.目前我只能收到邮件,消息,推特,脸书和半工作副本.我用一个url设置了activity items数组.然后我添加了一个该URL的nsstring并添加了url,并且一切工作都很好,就像复制工作更好,通过复制字符串并将其粘贴到更多区域.但是当也有字符串时,twitter和facebook将url添加到他们的文本中并包含链接.我怎么能这样做他们没有文本,只有链接?另一个问题是如何在Twitter和Facebook活动的链接中显示Web视图预览?它只显示一个野生动物园图标.第三个问题是我如何打印网页的内容?

printing objective-c uiactivity uiactivityviewcontroller

4
推荐指数
2
解决办法
3883
查看次数

使用AirDrop时,UIActivityViewController完成处理程序已完成

我正在使用UIActivityViewController分享一些文本和网址,它们在发送一些文本和网址时效果很好.

我目前需要使用完成处理程序来执行其他操作,具体取决于用户是取消了UIActivityViewController还是实际发送了一些内容.

完成处理程序(activityViewController.completionHandler对于iOS 7在iOS 8中已弃用)现在activityViewController setCompletionWithItemsHandler返回一个BOOL completed值,该值true在发送email sms Facebook Twitter时正确返回,但是当通过Airdrop用户发送时必须按下Cancel以关闭UIActivityViewController一次发送,因此我总是false从完成处理程序接收a .

有没有人知道有没有办法知道用户AirdropUIActivityViewController被解雇时已经使用了?

谢谢

ios uiactivity uiactivityviewcontroller uiactivitytypeairdrop

4
推荐指数
1
解决办法
3233
查看次数

Swift 3 UIActivity Subclass覆盖问题

我刚刚从swift 2升级到swift 3,我遇到了覆盖属性的一些问题.

在swift 2中,您可以像这样设置活动类型

override func activityType() -> String? {
   return "com.a.string"
}
Run Code Online (Sandbox Code Playgroud)

但是在swift 3中(在Xcode 8 beta 6中)他们引入了NS_STRING_ENUM,现在我们覆盖了这样的activityType

override var activityType() -> UIActivityType? {
    return UIActivityType.customActivityType
}
Run Code Online (Sandbox Code Playgroud)

问题是Xcode会抱怨:属性不能是@objc覆盖,因为它的类型不能用Objective-C表示

我找到的一个解决方案是将注释@nonobjc添加到它中,如下所示:

@nonobjc override var activityType() -> UIActivityType? {
    return UIActivityType.customActivityType
}
Run Code Online (Sandbox Code Playgroud)

虽然这有助于使错误消失,但此属性永远不会被调用...这是一个问题,因为当用户完成活动并且调用completionWithItemsHandler()时,活动类型被视为nil.

我找到的一个工作是使用objective-c扩展.有用; 它给了我喜欢的"马"类型.

@interface Custom_UIActivity (custom)
- (UIActivityType)activityType;
@end

@implementation Custom_UIActivity (custom)
- (UIActivityType)activityType {
    return @"horses";
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何以纯粹的速度做到这一点.

xcode overriding uiactivity swift

4
推荐指数
1
解决办法
1928
查看次数