是否可以在我们的应用程序中而不是 Safari 中打开 Markdown 链接?

6po*_*der 5 swift swiftui

当您使用 Markdown(下面的示例)并点击链接时,Swift 会自动关闭我的应用程序并在 Safari 中打开链接,但我想在我的应用程序内的 Web 视图中打开链接,这可能吗?

Text("Hello! Example of a markdown with a link [example](https://example.com)")
Run Code Online (Sandbox Code Playgroud)

Sco*_*man 14

SwiftUI 环境包含一个 URL 处理程序,默认情况下,它会在 Safari 中打开链接,但您可以提供自己的处理程序来覆盖它。

Text("Hello! Example of a markdown with a link [example](https://example.com)")
  .environment(\.openURL, OpenURLAction { url in
    // ... set state that will cause your web view to be loaded...
    return .handled
  })
Run Code Online (Sandbox Code Playgroud)

必须OpenURLAction返回一个类型的值OpenURLAction.Result- 在这里,.handled告诉系统您已经自己处理了 URL,因此操作系统不必执行任何其他操作。

您还可以包含某些逻辑,例如,如果 URL 指向特定主机,您可以处理它们,但其他所有内容都应该在 Safari 中打开;在这种情况下,您将返回.handled您负责的 URL 以及.systemAction应使用默认行为的任何 URL。

其他返回类型包括.discarded告诉应用程序忽略链接上的点击,以及.systemAction允许您重新定义在 Safari 中打开的链接的版本。不过,我认为这都不适合您的用例。

Fivestars.blog 上的这篇文章提供了更多详细信息。另请查看openURLOpenURLAction文档。