已确定的问题
在viewDidAppear:
我们执行以下操作:
UISceneActivationConditions *conditions = self.view.window.windowScene.activationConditions;
conditions.prefersToActivateForTargetContentIdentifierPredicate = [NSPredicate predicateWithFormat:@"self == %@", self.note.noteID];
conditions.canActivateForTargetContentIdentifierPredicate = [NSPredicate predicateWithFormat:@"self == %@", self.note.noteID];
当显示上下文菜单时,viewDidAppear:
会调用它并将其.activationConditions
应用于当前 UIScene。
请注意,上下文菜单的预览视图控制器与拖放项共享 NSUserActivity 详细信息,因此.targetContentIdentifier
我们尝试拖动的 NSUserActivity.activationConditions
与当前 UIScene 的谓词匹配。因此,当显示上下文菜单的预览视图控制器时,我们告诉系统当前 UIScene 是拖动事件的最佳接收者,从而阻止其他新窗口接收它(至少,这是我的假设)。
(虽然我不同意这种行为,但这似乎是 UIScene 激活条件在这个 iOS 13.1.3 中的解释方式。)
解决方案
为了解决这个问题,我只是阻止了.activationConditions
在上下文菜单中显示视图控制器时的配置。
这是一个显示成功拖放
的更新视频,即使显示了上下文菜单: