向ShareKit添加打印选项



我计划在我的应用程序中使用ShareKit。我还想有打印(AirPrint)。我想拥有所有的选择(Facebook &推特,打印机)在同一动作表中。有什么理由不让我这么做吗?我一直在寻找一些如何做到这一点的建议,但却一无所获。有一些提示可以从动作表中删除东西,但不能添加它们。打印机选项不被认为是"共享"吗?

向ShareKit添加操作的过程在"如何向ShareKit添加新操作"中有介绍。该描述假设您已经实现了ShareKit的核心功能(例如,您已经实现了ShareKit示例程序)。

你将从ShareKit Template Src文件夹中复制New Action模板。m和.h文件)放入项目中,用适当的名称(如"SHKPrint.m/.h")重命名这些文件。有一些明显的东西需要修改,比如类名和头导入文件。添加#import "SHKSharer.h"到头文件

将类添加到SHKSharers.plist中的操作/服务列表中,如链接页面所示。(在这一点上,我所能看到的操作和服务之间确实没有区别,而且就我所知,它们也可以组合在一起,没有问题。不过,其中的一个区别是,假定操作不需要身份验证。requiresAuthentication为模板中的方法)

之后,如文档所述,熟悉理解共享流程。

至少有一个canShare方法需要被覆盖,并且它们已经在模板中设置好了,您可以修改和取消注释。我想,出于您的目的,您可能希望将canshaharetext视为共享的合适方法,因此将该方法更改为返回YES。然后你将能够使用分配给UISimpleTextPrintFormatter或UIMarkupTextPrintFormatter的printFormatter来打印(但不是没有设置一个UIPrintInteractionController)。(我想你没有提到你要印什么,所以你必须即兴发挥。)

修改新的共享器类中的sharerTitle方法,以显示合适的标题。

此时,您应该能够运行代码并看到一个操作表。你的打印动作不会在这个页面上显示,但是如果你点击more…按钮,它应该显示在第二个工作表上。

单击该操作,除了将工作表隐藏之外,什么也不会发生。现在需要添加一些代码来执行打印。(稍后您将看到,如果您再次选择共享,新操作已添加到第一个操作表,这是一个最近使用的列表。)

我提到过,假设你已经实现了一个核心的ShareKit功能,比如ShareKit示例程序。如果你去调用sharekit动作表的方法(在你自己的代码中,比如响应你按下的共享按钮),你会看到一个地方来建立你想要共享的信息类型——例如,URL,图像,文本,…这与你想把你的共享信息发送到哪里无关——打印机、facebook、twitter……(我认为这是本末倒置,我已经修改了我自己的实现来解决这个问题。)但是,暂时忽略它,您将希望像这样设置它:

- (void) shareButtonPressed {
    SHKItem *item = [SHKItem text:yourSimpleTextOrMarkupText];
    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet showInView:self.view];
}

这将使轮子进入运动,以共享item对象中的任何内容。item对象包括一个shareType,在本例中是一个枚举类型SHKShareTypeText。

我不讨论将其转化为共享结果的机制。我在睡梦中还不知道,可能会误导你(如果我还没有)。

当你点击动作表中的项目时,SHKActionSheet类做了一些神奇的事情,将你的新动作类(在这个例子中是SHKPrint)的字符串名称转换成一个类,并使用它来调用一个类方法来分配和初始化同一个类的实例。(我是在打字的时候这样做的,所以我从第二页"more…"中跳过了如何完成这一步。我将把它留给读者去追踪,看看它是如何工作的。

共享是通过在SHKSharer类中运行shareshow方法的调用链完成的。(有一些关于自动共享的业务,我不会在这里深入讨论,但我认为你可以暂时忽略它。)这最终落在自定义类(SHKPrint)的send方法上。看看你的模板文件,它会给你一些指导。

有关打印的更多信息,请参阅此链接,该链接似乎提供了一个很好的示例,说明您可以如何打印。

我要停在这里有几个原因。我想我已经回答了你的问题,如何添加动作表单。此外,我没有AirPrint功能来测试,所以我自己无法走得更远。

如果您还有什么问题请告诉我。

最新更新