#swift #xcode #ipad #swiftui #mac-catalyst
Вопрос:
Я создал кнопку общего доступа, подобную этой:
struct ShareButton<Content: View>: View {
var items: [Any]
var content: () -> Content
var body: some View {
Button {
let avc = UIActivityViewController(activityItems: items, applicationActivities: [])
avc.popoverPresentationController?.sourceView = UIHostingController(rootView: self).view
UIApplication.shared.windows.filter({$0.isKeyWindow}).first?.rootViewController?.present(avc, animated: false)
} label: {
content()
}
}
}
это можно использовать следующим образом:
ShareButton(items: [someURL]){
Label("share", systemImage:"square.and.arrow.up")
}
Однако на Mac(Catalyst) и iPad всплывающее меню «Общий доступ» появляется не в том месте.
Похоже, что UIHostingController(rootView: self).view
возвращает неправильное представление ссылки. Кто-нибудь знает, как это исправить?
Комментарии:
1. Вы используете кнопку «Поделиться» на панели инструментов() или в представлении? Если это просто представление, я думаю, что код, который у вас есть, должен работать. Если это на панели инструментов, значит, у вас проблема. Это лучшее решение, которое я знаю: pspdfkit.com/blog/2020/popovers-from-swiftui-uibarbutton