作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我有一个奇怪的问题。我在 viewDidLoad
中像这样注册键盘监听器:
func registerObservers() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
keyboardWillAppear
处理程序代码如下所示:
func keyboardWillShow(_ notification: Notification) {
guard let keyboardFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
return
}
guard let keyboardAnimationDuration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? NSNumber else {
return
}
guard let keyboardAnimationCurve = notification.userInfo?[UIKeyboardAnimationCurveUserInfoKey] as? NSNumber else {
return
}
// Animation code
}
keyboardWillShow
调用它会将所选行滚动并动画到键盘上方。
keyboardWillShow
被调用两次,即
UIKeyboardWillShow
已经被解雇了两次。这导致我的动画出现问题,因为这现在也被调用了两次。检查通知中的框架后,第一个通知中的框架似乎不正确,无法使动画正常工作,但第二个通知的框架有效。这只发生在它第一次使用键盘时。如果我点击一个单元格并再次调用键盘
keyboardWillShow
只会被调用一次。我在这里做错了什么?为什么它在第一次加载时会触发两次?
最佳答案
关闭页面时删除通知中心。
override func viewDidDisappear(_ animated: Bool)
{
NotificationCenter.default.removeObserver(self, selector: #selector(keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.removeObserver(self, selector: #selector(keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
关于ios - UIKeyboardWillShow 在第一次使用键盘时调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970870/
嘿,我有一个奇怪的问题。我在 viewDidLoad 中像这样注册键盘监听器: func registerObservers() { NotificationCenter.defaul
我的应用程序使用 UIKeyboardWillShow 和 UIKeyboardWillHide 通知监视键盘的变化以动画化 UI 的特定部分。 我遇到的问题是,当我使用应用程序切换器(在不需要键盘的
当调用键盘时,我向上移动了一个 UIView,在模拟器中工作正常,但是当我出于某种原因在实际设备上运行代码时,UIKeyboardWillShow 通知被调用了两次。我没有使用任何自定义键盘。 在 v
我有一个 UIView 子类,其中添加了一个用于 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification 的观察器。此 UIVi
我的应用程序的用户报告了随机崩溃。我已经集成了 CrashAnalytics,它提供了以下详细信息: __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSER
我是一名优秀的程序员,十分优秀!