我已经在 SwiftUI(使用 UIViewRepresentable
)中为 iPad 应用布置了几个 WKWebView。
当我只需单击这些视图中的一个时,它就会获得焦点,并且我可以使用特定于网站的各种键盘快捷键(在页面下方的示例代码中,使用这些 DuckDuckGo 快捷键 - https://help.duckduckgo.com/duckduckgo-help-pages/features/keyboard-shortcuts/),以及向上/向下键滚动等
但是,如果我只是滚动网页视图,则它不会获得焦点。
如何使页面在滚动时立即获得焦点(UIKit 术语中的 becomeFirstResponder
)。此外,如何在 UI 中显示聚焦的 Web 视图(例如,通过将 Web 视图边框设置为红色)?
我的代码:
import WebKit
struct ContentView: View {
var body: some View {
VStack {
Webview(url: URL(string:"https://duckduckgo.com/?q=stack+overflow&t=h_&ia=web")!)
Divider()
Webview(url: URL(string:"https://duckduckgo.com/?q=ipad&t=h_&ia=web")!)
}
}
}
struct Webview: UIViewRepresentable {
let url: URL
func makeUIView(context: UIViewRepresentableContext<Webview>) -> WKWebView {
let webview = WKWebView()
let request = URLRequest(url: self.url, cachePolicy: .returnCacheDataElseLoad)
webview.load(request)
return webview
}
func updateUIView(_ webview: WKWebView, context: UIViewRepresentableContext<Webview>) {
let request = URLRequest(url: self.url, cachePolicy: .returnCacheDataElseLoad)
webview.load(request)
}
}