如何解决如何使 WKWebView 成为第一响应者并在滚动后响应键盘快捷键?
我已经在 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)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。