我已经开始将 UIDocumentInteractionController 用于新应用程序,但我想知道如何向预览屏幕上的操作菜单添加其他操作?
似乎菜单只列出了为给定 url 类型注册的应用程序,而且我看到 PRINT 出现在 iOS4.2 上。我想添加通过电子邮件发送并保存到照片,但看不到扩展此菜单的方法。我可以编写我想要的操作 好的,只是将它们添加到似乎不可能的菜单中?
我错过了一些明显的东西吗?
我已经开始将 UIDocumentInteractionController 用于新应用程序,但我想知道如何向预览屏幕上的操作菜单添加其他操作?
似乎菜单只列出了为给定 url 类型注册的应用程序,而且我看到 PRINT 出现在 iOS4.2 上。我想添加通过电子邮件发送并保存到照片,但看不到扩展此菜单的方法。我可以编写我想要的操作 好的,只是将它们添加到似乎不可能的菜单中?
我错过了一些明显的东西吗?
要显示电子邮件和“保存到”选项,您应该使用
- (BOOL)presentOptionsMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;
或者
- (BOOL)presentOptionsMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;
如 UIDocumentInteractionController.h 中所述:
/ 这是您应该调用的默认方法,让您的用户可以选择快速查看、打开或复制文档。/
使用时
// 显示一个菜单,允许用户在另一个应用程序中打开文档。
- (BOOL)presentOpenInMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;
或者
- (BOOL)presentOpenInMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;
不显示电子邮件、短信和“保存在照片/视频中”。
如果需要其他无法识别的操作,请考虑使用 UIActionSheet。
你是对的,这些是方法
- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller performAction: (SEL) action
- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller canPerformAction: (SEL) action
这些方法支持的操作选择器是copy:和print:。
我还不能发表评论,所以我正在回答:-)
您应该尝试一下 QuickLook 框架。就我而言,我搜索了如何自定义 UIDocumentInteractionController 并没有找到任何有用的东西。我使用 QuickLook 实现了我想要的(在我的情况下,在另一个视图中有一个预览“视图”)。这是一个示例代码,将 QLPreviewController 作为子控制器(能够自由创建父控制器,这将在您的情况下完成)。
self.previewController = [[QLPreviewController alloc]init];
self.previewController.delegate=self;
self.previewController.dataSource=self;
[self addChildViewController:self.previewController];
self.previewController.view.frame = CGRectMake(0, 0, self.previewView.frame.size.width, self.previewView.frame.size.height);
[self.previewView addSubview:self.previewController.view];
[self.previewController didMoveToParentViewController:self];
您还需要一些委托:QLPreviewControllerDataSource 和 QLPreviewControllerDelegate
还有一些需要实施:
- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
将 NSURL 返回到资源
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
返回要预览的项目数(在我的情况下,1)
我可以建议一个简单的 UIActionSheet 或者如果你在 iPad 上使用带有应用程序的表格视图,并且你可以手动添加打印、电子邮件和其他所有内容,我可以建议一个简单的 UIActionSheet 或更好的弹出框。