当键盘打开时,我正在调整webview的大小。我为webview添加了一些调试样式,如下所示
self.webViewController.view.layer.borderWidth = 5
self.webViewController.view.layer.borderColor = UIColor.green.cgColor
self.webViewController.view.backgroundColor = UIColor.blue
示例如下:https://github.com/zecar/ios-app-clone
这是我打开键盘后得到的结果。调整大小似乎工作正常,我在webview周围有绿色边框,所以这很好。问题是显示的蓝色背景,它似乎与键盘的高度完全相同。
这就是我调整大小的方法
self.keyboardOpenedFrame = CGRect(x: 0, y: 0.5, width: self.view.frame.width, height: self.originalFrame.height - kbSize)
self.view.frame = self.keyboardOpenedFrame
你在顶部看到的HTML元素是一个全屏元素,有固定的位置和100%的高度和100%的宽度,所以我猜蓝色的边距没有添加到HTML页面内部。
有什么想法吗?
//编辑:添加webview结构
struct WebView: View {
typealias UIViewControllerType = UIViewController
var body: some View {
if #available(iOS 14.0, *) {
WebViewRepresentable().edgesIgnoringSafeArea(.all).ignoresSafeArea(edges: .bottom)
} else {
// Fallback on earlier versions
WebViewRepresentable().edgesIgnoringSafeArea(.all)
}
}
struct WebViewRepresentable: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<WebView.WebViewRepresentable>) -> UIViewController {
return WebViewController()
}
func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<WebView.WebViewRepresentable>) {
}
}
}
3条答案
按热度按时间vngu2lb81#
更改WKWebView的滚动视图的内容插图:
还有
2ekbmq322#
不需要手动计算键盘框架,因为它是由约束处理的,可以用键盘显示文本字段,所以只需要注解
结果行为正确(此处不应更改帧-键盘偏移在内部处理,显示TextField的正确相对位置)
使用Xcode 13.4 / iOS 15.5进行测试
zmeyuzjn3#
this question给出了禁用WkWebView的键盘处理的方法。答案非常简单。只要删除WKWebView示例的这些观察结果。它对我来说在iOS 16上是有效的。
我想这只是WKWebView内部观察键盘变化的方式。