在SwiftUI iOS中获得openURL后,关闭SFSafariViewController可以通过以下步骤实现:
SFSafariViewControllerDelegate
。safariViewController.delegate = self
safariViewControllerDidFinish
。在该方法中,你可以执行关闭SFSafariViewController的操作。例如:func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
controller.dismiss(animated: true, completion: nil)
}
完整的代码示例:
import SwiftUI
import SafariServices
struct ContentView: View {
@State private var showSafari = false
var body: some View {
Button(action: {
showSafari = true
}) {
Text("打开Safari")
}
.sheet(isPresented: $showSafari) {
SafariView(url: URL(string: "https://www.example.com")!)
}
}
}
struct SafariView: UIViewControllerRepresentable {
let url: URL
func makeUIViewController(context: Context) -> SFSafariViewController {
let safariViewController = SFSafariViewController(url: url)
safariViewController.delegate = context.coordinator
return safariViewController
}
func updateUIViewController(_ uiViewController: SFSafariViewController, context: Context) {
// 更新视图控制器
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, SFSafariViewControllerDelegate {
let parent: SafariView
init(_ parent: SafariView) {
self.parent = parent
}
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
controller.dismiss(animated: true, completion: nil)
}
}
}
这样,当用户在SFSafariViewController中完成操作后,点击"Done"按钮或者滑动返回即可关闭SFSafariViewController。
注意:以上代码示例使用了SwiftUI的sheet
来呈现SFSafariViewController,如果你使用的是UIKit,可以将相应的代码适配到你的项目中。
推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),它是一款提供移动应用数据分析服务的产品,可以帮助开发者深入了解用户行为、应用性能等信息,优化移动应用的开发和运营。了解更多信息,请访问腾讯云移动应用分析(MTA)产品介绍页面:腾讯云移动应用分析(MTA)。
云+社区沙龙online第5期[架构演进]
云+社区技术沙龙[第11期]
云+社区技术沙龙[第17期]
腾讯技术开放日
云+社区技术沙龙[第22期]
云+社区技术沙龙[第6期]
T-Day
云+社区技术沙龙[第5期]
云+社区开发者大会(苏州站)
领取专属 10元无门槛券
手把手带您无忧上云