如何通过拖放创建新的 UIWindowScene?

How to create a new UIWindowScene from drag'n'drop?

我正在尝试在 iPadOS 中实现新的 multi-window,但我很难拖放。

在此 WWDC video 中,他们向我们展示了一个示例,其中在将邮件拖到屏幕一侧(在 11:45 处)后创建了一个新场景。

我们该怎么做?在关于该主题的其他几个视频中,他们总是通过点击按钮并调用 appdelegate 的 requestSceneSessionActivation.

来创建新场景

有谁知道如何创建视频中的新场景吗?

如果您转到视频附带的 WWDC 2019 Session 212 page, there is a link to the Supporting Multiple Windows on iPad 示例应用程序。这是他们演示的 Gallery 应用程序,包括通过拖放创建新场景的代码。

基本思路是创建一个 NSUserActivity 表示足够的数据来创建新场景。

在适当的拖动委托方法中(例如tableView(_:itemsForBeginning:at:)collectionView(_:itemsForBeginning:at:)),您从NSUserActivity创建一个UIDragItem

这样您就可以创建拖动项目,将其拖到屏幕的一侧。该过程的另一半是处理 UIWindowSceneDelegate 中提供的 NSUserActivity。您使用 NSUserActivity 中的数据来设置新创建的场景。