Swiftui 如何发送要接收的Scene.handlesExternalEvents(匹配:)的事件?
在2020年苹果平台API betas的中途,添加了主题中提到的方法。(向Swiftui 如何发送要接收的Scene.handlesExternalEvents(匹配:)的事件?,swiftui,Swiftui,在2020年苹果平台API betas的中途,添加了主题中提到的方法。(向AnyView添加了类似的方法)是否有人知道首先发送外部事件的对应API在哪里?使用发送场景在macOS中打开新窗口的示例。handlesExternalEvents @main struct TestAppApp: App { var body: some Scene { WindowGroup { MainView() } .handles
AnyView
添加了类似的方法)是否有人知道首先发送外部事件的对应API在哪里?使用发送场景在macOS中打开新窗口的示例。handlesExternalEvents
@main
struct TestAppApp: App {
var body: some Scene {
WindowGroup {
MainView()
}
.handlesExternalEvents(matching: Set(arrayLiteral: Wnd.mainView.rawValue))
WindowGroup {
HelperView()
}
.handlesExternalEvents(matching: Set(arrayLiteral: Wnd.helperView.rawValue))
}
}
enum Wnd: String, CaseIterable {
case mainView = "MainView"
case helperView = "OtherView"
func open(){
if let url = URL(string: "taotao://\(self.rawValue)") {
print("opening \(self.rawValue)")
NSWorkspace.shared.open(url)
}
}
}
和2个窗口/视图代码:
extension TestAppApp {
struct MainView: View {
var body: some View {
VStack {
Button("Open Main View") {
Wnd.mainView.open()
}
Button("Open Other View") {
Wnd.helperView.open()
}
}
.padding(150)
}
}
struct HelperView: View {
var body: some View {
HStack {
Text("This is ") + Text("Helper View!").bold()
}
.padding(150)
}
}
}
Info.plist还需要更改:
我的理解是,该修改器在窗口组或视图上工作,用于指示场景或视图支持通过切换、聚光灯、SiriKit或通用链接发送的
NSUserActivity
。在Info.plist中声明应用程序支持的活动(作为字符串标识符),并在应用程序结构中指示哪个场景处理哪个活动,以便框架可以决定要打开的正确场景。换句话说,它不是为了在应用程序的不同对象中发送n事件
,而是为了让SwiftUI知道哪个视图或场景可以处理应用程序广告的用户活动