微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 WKWebView 成为第一响应者并在滚动后响应键盘快捷键?

如何解决如何使 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 举报,一经查实,本站将立刻删除。