【发布时间】:2021-12-26 08:38:45
【问题描述】:
这是我的代码:
private struct ShareButton: UIViewRepresentable {
func makeUIView(context: Context) -> UIButton {
let activityViewController = UIActivityViewController(activityItems: [URL(string: "https://www.apple.com/")!], applicationActivities: nil)
let action = UIAction(title: "Share") { _ in UIApplication.shared.windows.first(where: { $0.isKeyWindow })?.rootViewController?.present(activityViewController, animated: false) }
let button = UIButton(primaryAction: action)
activityViewController.popoverPresentationController?.sourceView = button
return button
}
func updateUIView(_ uiView: UIButton, context: Context) { }
}
基本上它是创建一个带有UIAction 的UIButton,其中有一个UIActivityViewController 将sourceView 设置为共享菜单为UIButton。
这里是问题的演示:
UIButton 在创建 SwiftUI 视图时创建,并设置为 sourceView。我的猜测是出现问题是因为 UIButton 由于某些 SwiftUI 机制而以某种方式被破坏和重新创建?不过,我可能完全错了。无论如何要解决这个问题?
或者以任何其他方式在 SwiftUI Catalyst Mac 应用程序中执行共享按钮?
【问题讨论】:
-
这是否回答了您的问题stackoverflow.com/a/59433735/12299030?
标签: swiftui uibutton uikit uiactivityviewcontroller mac-catalyst