首页 > 解决方案 > 创建没有 UI 的 iOS 操作扩展

问题描述

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

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

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

关于如何做的任何想法?

标签: iosswiftios-extensions

解决方案


回答我自己的问题:实际上可以通过将属性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

    }
}

像这样创建扩展的最简单方法是添加一个新目标(File > New > Target),选择 Action Extension,然后在Action Type中选择No User Interface


推荐阅读