ios - macCatalyst 共享扩展偶尔会阻止输入?
问题描述
我的共享扩展代码有一个难以重现的问题,我很难修复 - 我在任何地方都找不到任何类似的问题,到目前为止我的尝试都是在黑暗中拍摄的。
这是一款 Catalyst 应用程序,在 iOS 和 iPadOS 上运行良好。此问题仅发生在 Catalyst 上。
当用户从 Safari 打开共享扩展时,会弹出一个表单,有时无法与之交互。单击按钮或尝试专注于文本字段不会做任何事情。它只是阻止所有输入,摆脱这种情况的唯一方法是重新启动 Safari。这非常烦人,但非常随机发生,可能每天一到两次。
NSExtensionPrincipalClass
设置为AddPostNavigationController
如下所示:
init() {
AppDefaults.registerDefaults()
self.account = AccountManager.shared.account
self.viewController = account.isLoggedIn ? EditPostViewController(account: account) : EmptyViewController(account: account)
super.init(rootViewController: viewController)
}
override func beginRequest(with context: NSExtensionContext) {
super.beginRequest(with: context)
switch viewController {
case let viewController as EditPostViewController:
let _ = viewController.view
viewController.actionExtensionContext = context
case let viewController as EmptyViewController:
let _ = viewController.view
viewController.actionExtensionContext = context
default:
break
}
}
两者中的actionExtensionContext
属性EditPostViewController
并EmptyViewController
根据网站填充表单值并设置回调,例如:
onCancel = { extensionContext.completeRequest(returningItems: nil) }
onPostSaved = { extensionContext.completeRequest(returningItems: nil) }
每次共享扩展弹出时,我都可以看到正确设置了表单值。它只是不时拒绝接受输入。
解决方案
推荐阅读
- java - 应用程序不会显示 mediaPlayer
- go - 我如何黑洞一个标准的 Go 网络请求
- amazon-web-services - RDS vCPU 和 RAM 配置属性
- javascript - foreach里面的foreach js
- angular - 在 Angular 中,如何使用“href”导航到相对路径?
- javascript - Javascript / react - .map 无法正常工作
- eclipse - 通过 RestTemplate 交换不适用于自定义类
- rust - 结构中的可变性
- list - TCL列表foreach
- r - 如何在此优化问题中避免多个 for 循环