向ShareKit添加打印选项

时间:2011-11-29 15:17:01

标签: iphone cocoa-touch sharekit airprint

我打算在我的应用程序中使用ShareKit。我也想要打印(AirPrint)。我想在同一个动作表中有所有选项(Facebook& Twitter& Printer)。 我有什么理由不这样做吗? 我一直在寻找有关如何实现这一目标的一些提示,但却出现了空白。有一些提示可以从ActionSheet中删除内容但不添加它们。打印机选项不会被视为“共享”吗?

1 个答案:

答案 0 :(得分:3)

How to Add a New Action to ShareKit”中介绍了向ShareKit添加操作的过程。此描述假设您已经实现了核心Sharekit功能(例如,您已实现了ShareKit示例程序)。

您将New Share模板从ShareKit Template Src文件夹(.m和.h文件)复制到项目中,使用适当的名称重命名文件(如“SHKPrint.m / .h”)。有一些显而易见的事情要改变,比如类名和标题导入文件。将#import "SHKSharer.h"添加到头文件中。

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

之后,正如文档所述,熟悉Understanding the share flow

至少需要覆盖一个canShare方法,并且已在模板中设置它们以供您修改和取消注释。我为您的目的进行成像,您可能希望将canShareText视为一种适当的共享方法,因此请将其更改为YES。然后,您将能够使用分配给UISimpleTextPrintFormatter或UIMarkupTextPrintFormatter的printFormatter进行打印(但不是没有设置UIPrintInteractionController)。 (我认为你没有提到你想要打印什么,所以你必须即兴发挥。)

修改新的新分享者类中的sharerTitle方法,以显示相应的标题。

此时,您应该能够运行代码并查看操作表。您的打印操作不会显示在此处,但如果您单击更多...按钮,它将显示在第二张纸上。

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

我提到假设您已经实现了核心ShareKit功能,例如ShareKit示例程序。如果您转到调用sharekit操作表的方法(在您自己的代码中,例如响应您按下共享按钮),您将看到一个位置来确定您要共享的信息类型 -​​ 例如,URL,图像,文字,...这与你想要发送你的共享信息的位置无关 - 打印机,脸书,推特,...(我认为这把马放在马前,我修改了自己的实现来修复但是,暂时忽略这一点,你会想要设置这样的东西:

- (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对象包含一个shareType,在本例中为SHKShareTypeText,它是一个枚举类型。

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

当您单击操作表中的项目时,SHKActionSheet类会做一些魔术,将新操作类的字符串名称(在本例中为SHKPrint)转换为类,并使用它来调用类方法进行分配并初始化同一个类的实例。 (我在输入时这样做,所以我从“更多......”第二张表中跳过了如何完成这一步的步骤。我将把它留给读者来追踪它并看看它是如何工作的。)

通过在SHKSharer类中运行share,然后show方法的调用链完成共享。 (有一些关于自动分享的业务,我不会在这里讨论,但我认为你暂时可以忽略它。)这最终落在你的自定义类(SHKPrint)的send方法上。查看您的模板文件,它将为您提供有关如何操作的一些指导。

有关打印的更多信息,see this link,这似乎是一个很好的例子,说明你可以做什么打印。

我会因为几个原因而停在这里。我想我已经回答了你的问题,如何添加一个行动表。另外,我没有AirPrint功能可以在这里进行测试,所以我不能自己走得更远。

如果您有任何其他问题,请告诉我。