【问题标题】:Create iOS Action Extension with no UI创建没有 UI 的 iOS 操作扩展
【发布时间】:2019-02-10 20:21:29
【问题描述】:

我正在尝试创建一个类似于 iOS 中可用的系统“复制”操作的操作扩展。
我找到了不同的答案,说不可能有非全屏 UI,但根据 Apple Official Documentation 可能没有 UI(我想就像在复制操作中一样)。

动作(iOS 和 macOS;UI 和非 UI 变体)

我尝试过创建透明视图,但结果始终是全屏黑色覆盖。
我已经在Info.plist 中将NSExtensionActionWantsFullScreenPresentation 指定为NO,但没有任何变化。

你知道怎么做吗?

【问题讨论】:

  • 你能把你的代码分享给我们吗?
  • 我已经用一些代码添加了我自己的答案。

标签: ios swift ios-extensions


【解决方案1】:

回答我自己的问题:实际上可以通过将属性NSExtensionPrincipalClass 分配给实现NSExtensionRequestHandling 协议的类来在iOS 上创建非UI 操作扩展。

例子:

class ActionRequestHandler: NSObject, NSExtensionRequestHandling {

    var extensionContext: NSExtensionContext?

    func beginRequest(with context: NSExtensionContext) {
        // Do not call super in an Action extension with no user interface
        self.extensionContext = context

        // Do stuff with the context

    }
}

像这样创建扩展最简单的方法是添加一个新目标(文件>新建>目标),选择操作扩展,然后在操作类型无用户界面 /strong>。

【讨论】:

  • 嗨@pasine。请告诉我是否可以从包含的应用程序以编程方式调用此扩展程序?
  • 对不起,我没有尝试过,所以我没有答案。
【解决方案2】:

在 iOS 中,Action 扩展:

  • 帮助用户以不同的方式查看当前文档

  • 始终出现在操作表或全屏模式视图中

  • 仅当主机应用明确提供时才接收选定的内容

【讨论】:

  • 那么,no UI 选项是否仅在 MacOS 上可用?这是否意味着我可以使用非全屏操作表?
  • 是的,它只存在于 MacOS 上。是的,根据文档,您可以拥有一个从未全屏的操作表。
  • 显然,非 UI 变体也存在于 iOS 上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多