如何从拖放创建新的UIWindowScene?

时间:2019-09-06 16:21:49

标签: ios ipad drag-and-drop ios13 multi-window

我正在尝试在iPadOS中实现新的多窗口功能,但我为拖放而苦苦挣扎。

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

我们该怎么做?在有关该主题的其他几个视频中,他们总是通过点击按钮并调用appdelegate的requestSceneSessionActivation来创建新场景。

有人知道如何像视频中那样创建新场景吗?

1 个答案:

答案 0 :(得分:3)

如果您转到WWDC 2019 Session 212 page,则该视频附带一个指向Supporting Multiple Windows on iPad示例应用程序的链接。他们演示了这是Gallery应用程序,其中包括通过拖放创建新场景的代码。

基本思想是创建一个NSUserActivity,表示足以创建新场景的数据。

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

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