25

我已经开始将 UIDocumentInteractionController 用于新应用程序,但我想知道如何向预览屏幕上的操作菜单添加其他操作?

似乎菜单只列出了为给定 url 类型注册的应用程序,而且我看到 PRINT 出现在 iOS4.2 上。我想添加通过电子邮件发送并保存到照片,但看不到扩展此菜单的方法。我可以编写我想要的操作 好的,只是将它们添加到似乎不可能的菜单中?

我错过了一些明显的东西吗?

4

4 回答 4

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。

于 2014-11-18T08:16:14.060 回答
2

你是对的,这些是方法

- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller performAction: (SEL) action


- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller canPerformAction: (SEL) action

这些方法支持的操作选择器是copy:print:

于 2011-05-03T13:34:45.553 回答
2

我还不能发表评论,所以我正在回答:-)

您应该尝试一下 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)

于 2014-01-27T15:07:09.063 回答
0

我可以建议一个简单的 UIActionSheet 或者如果你在 iPad 上使用带有应用程序的表格视图,并且你可以手动添加打印、电子邮件和其他所有内容,我可以建议一个简单的 UIActionSheet 或更好的弹出框。

于 2011-10-15T19:11:05.937 回答