我正在尝试创建一个应用程序来查看PDF并将其保存在iBooks中,邮寄并打印。 现在我使用以下代码:
if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0))
{
AppDelegate appDelegate = (AppDelegate)UIApplication.SharedApplication.Delegate;
//url to local PDF
var items = new NSObject[] { NSData.FromFile(_pdfUrl) };
var activityController = new UIActivityViewController(items, null);
activityController.ExcludedActivityTypes = new NSString[]
{
UIActivityType.AssignToContact,
UIActivityType.Message,
UIActivityType.PostToFacebook,
UIActivityType.PostToTwitter,
UIActivityType.PostToWeibo,
UIActivityType.CopyToPasteboard,
UIActivityType.SaveToCameraRoll
};
PresentViewController(activityController, true, null);
}
当我按下按钮执行此代码时,我看到了viewcontroller,但只有Mail和Print(在带有iBooks的设备上测试过)。我的问题是:“在iBooks中打开”是否需要添加自己?或者我做错了什么?
另一个问题是在iOS5中做同样的事情时,我使用的是UIDocumentInteractionController:
UIDocumentInteractionController doc = UIDocumentInteractionController.FromUrl(new NSUrl(_pdfUrl, false));
doc.WeakDelegate = this;
doc.PresentOptionsMenu(btn.Frame, this, true);
但没有任何反应(iPhone模拟器,没有iOS 5设备)。在另一篇文章中有人说,如果iBooks不在设备上就不会发生任何事情。但邮件和打印呢?
有人可以帮我解决这个问题吗?
提前致谢
编辑:
在iOS 6中使用此代码非常有效:
UIDocumentInteractionController doc = UIDocumentInteractionController.FromUrl(new NSUrl(_pdfUrl, false));
doc.WeakDelegate = this;
doc.PresentOptionsMenu(btn.Frame, this, true);
编辑:
我正在寻找一种使用UIDocumentInteractionController在iOS5上显示邮件和打印的方法。任何人的想法?
答案 0 :(得分:1)
那是因为iBooks没有内置的UIActivityType
常量。
但是,创建自己的UIActivity
提供程序非常容易。我用C#为AirPlay制作了一个(可在github上找到),你可以用它作为你的基础。
首先要检测iBook是否可用(覆盖CanPerform
)。 seems你可以使用``ibooks://“前缀来检查这个(所以它应该更容易)。接下来是打开文档,然后提供一个图标。
请注意,我建议您不要这样做:
var items = new NSObject[] { NSData.FromFile(_pdfUrl) };
并且仅使用URL,因为您不知道PDF的大小(它可能大于您设备的可用内存)。