URL Scheme/onOpenURL总是打开一个新窗口(使用SwiftUI开发Mac应用)

URL Scheme/onOpenURL总是打开一个新窗口(使用SwiftUI开发Mac应用)

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

文章讨论了在macOS的SwiftUI中使用onOpenURL时,如何避免每次点击都打开新窗口。通过设置preferring和allowing参数,可以激活现有窗口或创建新窗口。解释了这两个参数的含义,以帮助开发者理解事件处理。

🎯

关键要点

  • 在macOS的SwiftUI中,使用onOpenURL时每次点击都会打开新窗口,这会造成困扰。
  • 可以通过设置preferring和allowing参数来激活现有窗口或创建新窗口。
  • preferring参数是一个字符串集,用于检查视图的targetContentIdentifier,以确定视图是否倾向于处理外部事件。
  • allowing参数是一个字符串集,用于检查视图的targetContentIdentifier,允许视图处理事件。
  • 空集永远不会匹配,而'*'总是匹配。

延伸问答

如何在SwiftUI中使用onOpenURL避免每次点击都打开新窗口?

可以通过设置preferring和allowing参数来激活现有窗口或创建新窗口。

preferring和allowing参数在onOpenURL中有什么作用?

preferring参数用于检查视图的targetContentIdentifier,以确定视图是否倾向于处理外部事件;allowing参数则用于检查视图是否允许处理事件。

在使用onOpenURL时,空集和'*'的匹配规则是什么?

空集永远不会匹配,而'*'总是匹配。

如何在macOS的SwiftUI中处理外部事件?

可以使用handlesExternalEvents方法结合preferring和allowing参数来处理外部事件。

使用onOpenURL时,如何确保只打开一个窗口?

通过设置handlesExternalEvents的preferring参数来检查现有窗口,并使用allowing参数来允许处理事件。

在SwiftUI中,如何调试onOpenURL的URL?

可以在onOpenURL的perform闭包中打印url,以进行调试。

➡️

继续阅读