iOS上下文菜单API可以';t显示链接演示内容

iOS上下文菜单API可以';t显示链接演示内容,ios,swift,contextmenu,Ios,Swift,Contextmenu,当用户强制或长按链接时,我试图使用LinkPresentation API在UIContextualMenu中显示网站的预览,类似于peek和pop用于链接的方式。但是,lpapi从网站异步加载元数据,当我强制触摸链接时,上下文菜单显示的预览控制器为空。以下是UIContextMenuConfiguration的委托方法: public func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurati

当用户强制或长按链接时,我试图使用LinkPresentation API在UIContextualMenu中显示网站的预览,类似于peek和pop用于链接的方式。但是,lpapi从网站异步加载元数据,当我强制触摸链接时,上下文菜单显示的预览控制器为空。以下是UIContextMenuConfiguration的委托方法:

public func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {

    guard let url = shouldShowContextualMenu(location: location) else { return nil }

    return UIContextMenuConfiguration(identifier: nil, previewProvider: { () -> UIViewController? in

        self.getMetadataForUrl(url: url ) { linkView in
            self.previewController = LinkPreviewViewController(linkView: linkView)
        }

        return self.previewController
    }, actionProvider: nil)
}

我认为您没有正确使用链接预览。链接预览的整个要点是,您不从站点加载元数据,因为您已经有了元数据。加载与富链接关联的预览图像。请参阅教程。不,对不起,这不正确。1)如果我们检索元数据的唯一方法是从本地缓存2,那么框架的使用将是什么?您链接到的是从站点加载元数据,而不是返回上下文菜单交互的中间。它获取元数据,然后建立活动视图控制器。这就是我说你没有正确使用链接预览的意思。您现在需要返回上下文菜单交互。因此,它不能依赖于未来。现在不是使用链接预览的时候。我明白你的意思,但是ContextMenuConfiguration实际上会立即返回,因为fetchMetadata代码运行在不同的线程中,这不是“然而”,这是我的观点。-假设您在WKWebView中。然后实现UI代理的
网络视图(uuxContextMenuConfigurationForElement:)
,并获得一个预览,它本身就是一个网络视图,可以实时加载。但是在这个方法中,您必须返回一个快照,现在就必须返回它。