我有一个UIActivity创建自己的子类activityViewController:
- (UIViewController *)activityViewController {
WSLInProgressViewController* progressView = [[[WSLInProgressViewController alloc] init] autorelease];
progressView.message = [NSString stringWithFormat:NSLocalizedString(@"Posting to %@...",@"Posting to..."),
self.activityType];
return progressView;
}
Run Code Online (Sandbox Code Playgroud)
根据文档,您不应该手动解雇.相反,操作系统会在您打电话时执行此操作activityDidFinish:.这在iPhone上运行时工作正常.
当我说"工作"时,这是我期待的事件序列(并在iPhone上看到):
UIActivityViewController activityDidFinish: UIActivityViewController还驳回但是,当我在iPad模拟器上运行相同的代码时 - 唯一的区别是我把它UIActivityViewController放在弹出窗口中,正如文档所说的那样 - activityViewController永远不会解散.
正如我所说,这是代码wo/popUP在iPhone上工作,我已经逐步完成了代码,所以我知道它activityDidFinish:正在被调用.
我发现这个雷达在iOS6beta 3中讨论了相同的问题,但它似乎是我怀疑我的代码而不是操作系统中的错误的基本功能(也注意它与Twitter和Facebook功能正常工作!).
我错过了什么吗?当activityViewController运行时,我是否需要在activityViewController中做一些特别的事情UIPopoverViewController?iPad上的"流量" 应该是不同的吗?
在iPhone上的"照片"应用程序中,当您选择"邮件共享"选项时,照片会动画进入向上滑动的模态视图控制器.如何修改内置UIActivities的行为?例如,我希望能够设置邮件编辑器的主题字段.
我正在使用UIActivityItemProvider子类来提供自定义数据.但有时获取数据失败,我不想提供活动(例如消息编写器).尝试[self cancel]并return nil;在item方法中,但消息编写器仍然显示(带有空消息).
我的应用程序支持iOS 7+,我使用UIActivity图像大小:iPhone为60pt,iOS为iPad为76pt,
当触摸更多按钮重新排序项目时,它无法显示列表中的图标.


代码如下:
class ZYShare {
class ActivityItem {
init() {
self.title = ""
self.icon = ""
}
var title: String?
var icon: String?
var type: ShareType = ShareTypeAny
}
class CommonActivity: UIActivity {
lazy var itemInfo = ActivityItem()
override func prepareWithActivityItems(activityItems: [AnyObject]) {
// do something
}
override func canPerformWithActivityItems(activityItems: [AnyObject]) -> Bool {
return true
}
override class func activityCategory() -> UIActivityCategory {
return UIActivityCategory.Action
}
override func activityType() -> String? {
return NSLocalizedString(itemInfo.title ?? "", comment: …Run Code Online (Sandbox Code Playgroud) 我正在尝试对标准活动(打印,邮件,FaceBook等)实施自定义活动,但现在只需要标准打印(用于AirPrint)和我自己的直接方法自定义打印.我显然缺少一些基本的东西,因为我的自定义类中的方法都没有被调用.现在我只有一些NSLog语句来确定调用序列,并使框架运行.
以下是我的自定义活动类的测试代码:
// PrintActivity.h
#import <UIKit/UIKit.h>
@interface PrintActivity : UIActivity
@end
Run Code Online (Sandbox Code Playgroud)
还有他们
#import "PrintActivity.h"
@interface PrintActivity ()
@property (nonatomic, strong) UIWebView *dummyWebView;
@end
@implementation PrintActivity
- (NSString *)activityType {
NSLog(@"activityType");
return @"MetriScan Print";
}
- (NSString *)activityTitle {
NSLog(@"activityTitle");
return @"MetriScan\nPrint";
}
- (UIImage *)activityImage {
NSLog(@"activityImage");
UIImage *icon = [UIImage imageNamed:@"metriscan_57_c2a_3.png"];
return icon;
}
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
NSLog(@"canPerformWithActivityItems");
return YES;
}
- (void)prepareWithActivityItems:(NSArray *)activityItems {
NSLog(@"prepareWithActivityItems");
}
- (void)performActivity {
NSLog(@"Do the actual printing here");
// My custom …Run Code Online (Sandbox Code Playgroud) 我想自定义添加UIActivity类型UIActivityCategoryAction来UIActivityController.但是在iOS 8中,所有这些都出现在黑色背景下.
有没有办法改变这个?
现在XCode 6带有iOS 8 SDK,我们可以谈谈这些东西.我尝试在iOS 7上使用UIActivityViewController进行自定义活动,一切正常.但是在iOS 8上,当显示自定义活动时,旁边会有"更多"按钮,单击此按钮会显示完全相同的自定义活动.有没有人找到解决方法来删除此按钮?我找不到任何解决方案了.

我正在使用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和UIDocumentInteractionController?Mail应用程序和Tumblr应用程序似乎使用UIDocumentInteractionController来编译UIActivityViewController,因为它们的控制器还显示除了UIActivities之外的"Open in"按钮.我怎么能做到这一点?
uiactivity ×10
ios ×7
ios8 ×4
cocoa-touch ×2
ios6 ×2
ipad ×1
iphone ×1
nsoperation ×1
pinterest ×1
share ×1
sharing ×1