我试图在我的iOS 8 Swift应用中实现一个简单的键盘观察器,但它真的不起作用。这是我目前使用的代码:
override func viewDidAppear(animated: Bool) {
NSNotificationCenter().addObserver(self, selector: Selector(keyboardWillAppear()), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter().addObserver(self, selector: Selector(keyboardWillHide()), name: UIKeyboardWillHideNotification, object: nil)
}
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter().removeObserver(self)
}
func keyboardWillAppear() {
logoHeightConstraint.constant = 128.0
}
func keyboardWillHide() {
logoHeightConstraint.constant = 256.0
}
奇怪的是,这两个对键盘做出React的函数在启动应用程序后都只被调用一次。当我进入或离开文本字段时,什么都没有发生。我做错了什么?顺便问一下:更改约束是否是更改图像大小的最佳解决方案?
我真的很感谢你的帮助!
5条答案
按热度按时间kb5ga3dv1#
调用
NSNotificationCenter()
将在每次调用时示例化一个新的NSNotificationCenter
。请尝试改用NSNotificationCenter.defaultCenter()
。lp0sw83n2#
yyhrrdl83#
我更喜欢使用UIKeyboardWillChangeFrameNotification,因为如果大小发生变化(例如,当隐藏/显示建议时),您会得到通知
iyzzxitl4#
Swift 3及以上代码。增加了获取键盘高度的代码
vof42yt15#
Swift 4.0,闭合件: