如果我在显示WKWebView时打开键盘,它会自动将adjustedContentInset添加到ScrollView。但问题是,如果我自己处理键盘,它仍然会添加adjustedContentInset。我该怎么解决这个问题?
v1l68za41#
如果你从WKWebView中移除处理键盘的观察者,它将停止添加adjustedContentInset:
NotificationCenter.default.removeObserver(self.webView, name: UIResponder.keyboardWillChangeFrameNotification, object: nil) NotificationCenter.default.removeObserver(self.webView, name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.removeObserver(self.webView, name: UIResponder.keyboardWillHideNotification, object: nil)
tzcvj98z2#
当keyboardWillShowNotification/keyboardWillHideNotification触发时,我在更改Web视图上的自动布局约束时遇到了这个问题。什么对我起作用:1.示例化WKWebViewAFTER 在键盘事件上添加观察者。1.更改自动布局约束后,触发布局阶段。
keyboardWillShowNotification
keyboardWillHideNotification
WKWebView
let notificationCenter = NotificationCenter.default notificationCenter.publisher(for: UIResponder.keyboardWillShowNotification, object: nil) .sink { [weak self] _ in self?.attachWebViewToKeyboard() self?.view.layoutIfNeeded() } .store(in: &cancellables) notificationCenter.publisher(for: UIResponder.keyboardWillHideNotification, object: nil) .sink { [weak self] _ in self?.attachWebViewToBounds() self?.view.layoutIfNeeded() } .store(in: &cancellables) webView = WKWebView(frame: .zero)
(我在这里使用合并,但经典的addObserver也可以。upvoted解决方案也可以工作,但缺点是当<input>元素获得焦点并打开键盘时,它也会禁用自动滚动内容偏移调整。
addObserver
<input>
2条答案
按热度按时间v1l68za41#
如果你从WKWebView中移除处理键盘的观察者,它将停止添加adjustedContentInset:
tzcvj98z2#
当
keyboardWillShowNotification
/keyboardWillHideNotification
触发时,我在更改Web视图上的自动布局约束时遇到了这个问题。什么对我起作用:
1.示例化
WKWebView
AFTER 在键盘事件上添加观察者。1.更改自动布局约束后,触发布局阶段。
(我在这里使用合并,但经典的
addObserver
也可以。upvoted解决方案也可以工作,但缺点是当
<input>
元素获得焦点并打开键盘时,它也会禁用自动滚动内容偏移调整。