共享扩展 - 未调用 beginRequestWithExtensionContext

Share extension - beginRequestWithExtensionContext not called

我有一个 iOS 应用程序的共享扩展,它有一个自定义 UI。当 运行 加载故事板的扩展并且 UI 显示正常,但未调用 beginRequestWithExtensionContext

(简化)视图控制器代码:

class ShareViewController: UIViewController, NSExtensionRequestHandling {

    // This is called…
    override func viewDidLoad() {
        super.viewDidLoad() 
    }

    // …but this isn't!
    override func beginRequestWithExtensionContext(context: NSExtensionContext) {            
        println("beginRequestWithExtensionContext")
    }
}

NSExtensionAttributes:

<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
    <key>NSExtensionMainStoryboard</key>
    <string>Share</string>
</dict>
</plist>

关于为什么 beginRequestWithExtensionContext 可能没有被调用的任何想法?

好的,所以在 2 天来回反复之后,我在 SO 上发布问题 30 分钟后就弄明白了!所以,如果其他人有同样的问题......

故事板有一个 UINavigationController 作为它的初始视图控制器,所以 beginRequestWithExtensionContext 当然是在那个而不是 ShareViewController 上触发的。

我将 UINavigationController 子类化以解决问题:

class ShareNavigationController: UINavigationController, NSExtensionRequestHandling {

    override func beginRequestWithExtensionContext(context: NSExtensionContext) {

        super.beginRequestWithExtensionContext(context)

        (self.topViewController as! ShareViewController).handleContext(context)
    }
}