简单文字动作扩展Swift 3

之所以如此,是因为我想为自己的一个应用构建共享扩展。 我碰巧也遇到了动作扩展,所以我决定首先在这些扩展上写一个不错的博客,然后再写一个关于共享扩展的博客。

动作扩展与共享扩展非常相似,因为它基本上是自己的小应用程序,可让您修改文本或图像等不同的数据。 例如,消除图片中的红眼,使文本更大且更易于阅读。 就创建这些而言,确实并不难。 我将其称为“添加时间段”,当单击活动视图控制器按钮时,它将出现。

第一步是在项目中实际创建操作扩展。 为此,请转到文件->新建->目标,然后选择操作扩展:

完成此操作后,您将在您的操作扩展程序的应用程序中看到一个新文件夹,其中包含其自己的故事板文件和视图控制器。

由于我希望该应用程序只能接受文本,因此我们必须进入info.plist文件,并将我们的NSExtensionActivationRule插入字典,然后将NSExtensionActivationSupportsText添加为值为YES的布尔类型。 您还可以在plist中更改Bundle显示名称。 这样做的原因是,捆绑包名称实际上是面向用户的名称,这意味着它将出现在活动视图控制器中。

首次创建动作扩展时,您会看到它提供了默认实现,在情节提要中带有imageView,并且在视图控制器中提供了能够处理图像的代码。 在我们的例子中,我们可以使用相同的代码,但是将其调整为处理文本而不是图像..最后,视图控制器将如下所示:

我不会在这里遍历所有代码,但是扩展的工作方式是它们与NSExtensionItems一起返回,我们要做的就是根据我们在系统中设置的内容检查它是否为kUTTypeText类型为String。 plist文件。 在此示例中,您可以看到我通过在结尾处简单地添加句点来更改字符串。

完好的功能只是将字符串转换回NSExtensionItem,然后返回给应用程序。 但是,这仅在您使用扩展程序的应用程序具有接受这些扩展程序的代码的情况下才有效。 我不确定应用接受这些应用的普遍性,但是到目前为止,这似乎并不是很标准的事情。 话虽如此,我建立了一个便笺应用程序,就像默认的iPhone便笺应用程序一样,并用代码编写了接受此操作扩展的代码。

为了使应用程序能够处理操作扩展,您需要在活动视图控制器上调用completionWithItemsHandler。 我在下面的Notes应用程序中包含了整个onShare函数的代码,该代码创建了活动视图控制器,然后创建了接受操作扩展的代码。