ios - iOS UIKeyboardWillShow 意外触发
问题描述
我有 aUITextView
和 a UITableView
,我需要TableView
在键盘打开和关闭时调整底部位置和滚动,所以我为键盘设置了通知。不仅在键盘打开(预期)时执行KeyboardWillShow
和KeyboardDidShow
触发,它们还会在加载视图以及键盘关闭时触发(不预期)。这些是应用程序中设置的唯一通知。
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow(_:)), name: .UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: .UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidHide(_:)), name: .UIKeyboardDidHide, object: nil)
@objc func keyboardWillShow(_ notification: Notification) {
print ("KEYBOARD WILL SHOW")
}
@objc func keyboardDidShow(_ notification: Notification) {
print ("KEYBOARD DID SHOW")
}
@objc func keyboardWillHide(_ notification: Notification) {
print ("KEYBOARD WILL HIDE")
}
@objc func keyboardDidHide(_ notification: Notification) {
print ("KEYBOARD DID HIDE")
}
单击TextView
打开键盘,然后拖动TableView
关闭它。(TableView
已通过“交互式关闭”以及“拖动时关闭”进行了测试)。
这是加载视图、打开键盘和关闭键盘后的控制台输出:
查看首次加载(键盘未打开)....
KEYBOARD WILL SHOW
(不期望)
KEYBOARD DID SHOW
(不期望)
键盘打开...
KEYBOARD WILL SHOW
(预期的)
KEYBOARD DID SHOW
(预期的)
键盘关闭...
KEYBOARD WILL HIDE
(预期的)
KEYBOARD WILL SHOW
(不期望)
KEYBOARD DID HIDE
(预期的)
KEYBOARD DID SHOW
(不期望)
此外,当TableView
设置为“以交互方式关闭”并且我TableView
缓慢向下拖动时,“WillShow/DidShow”事件会在键盘关闭大约 2/3 时开始疯狂触发。
什么可能导致这些键盘打开事件触发?
Xcode 11.3/iOS 9.0
解决方案
它可能是另一个不可见的视图,导致键盘显示或隐藏。观察这些事件的每个人都会收到通知,包括当前未激活的其他视图。
推荐阅读
- ios - Swift - 以编程方式创建图表(条形图、折线图、饼图、柱形图)
- javascript - 动态初始化到 npm 包中的变量
- html - 上传文件的 Mime 类型不正确
- mongodb - 为收集的过期数据设置 TTL
- go - Accept a character from console and display its next character
- ios - is it possible to "Pause" and "Resume" AVAssetDownloadTask?
- javascript - 如何单击从同一 javascript 添加到 html 的元素?
- r - R- Include starting point in cumsum function
- java - 从签名的 jar 中提取证书
- arrays - Laravel: How to get JSON objects with names separeted by "-"?