共享扩展 - 未调用 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)
}
}
我有一个 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)
}
}