ios - 如何根据键盘大小正确实现 View 的缩小和扩展?

标签 ios swift user-interface

我正在尝试为 iOS 创建一个聊天界面,该界面会根据键盘的存在而展开和缩小。

我已经使用观察者实现了它,因为键盘会显示和消失通知及其工作。

func keyboardWillDisappear(notification: NSNotification){
    var userInfo:NSDictionary = notification.userInfo!
    var keyboardSize = userInfo.objectForKey(UIKeyboardFrameEndUserInfoKey)!.CGRectValue().size
    var oldViewFrame : CGRect = self.view.frame
    self.view.frame = CGRectMake (0, 0, oldViewFrame.width, oldViewFrame.height + keyboardSize.height)
}
func keyboardWillAppear(notification: NSNotification){

    var keyboardSize = userInfo.objectForKey(UIKeyboardFrameEndUserInfoKey)!.CGRectValue().size
    var oldViewFrame : CGRect = self.view.frame
    self.view.frame = CGRectMake (0, 0, oldViewFrame.width, oldViewFrame.height - keyboardSize.height)      
}

现在在某种程度上这是可行的,但是如果用户试图激活或停用预测输入建议,事情就会爆炸。 keyboardWillAppear 被调用但 keyboardWillDisappear 没有被调用,因此每次启用预测时 View 都会一次又一次地缩小

这样做一定有更简单、更安全的方法,如果还有其他需要注意的地方请告诉我。 谢谢

最佳答案

你还需要观察

UIKeyboardWillChangeFrameNotification

和/或

UIKeyboardDidChangeFrameNotification

关于ios - 如何根据键盘大小正确实现 View 的缩小和扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080344/

相关文章:

ios - 如何在 iOS 中为拍卖应用程序集成倒计时

swift - MVVM 中的网络

java - 在java中创建表

swift - 自定义协议(protocol)

java - 从不同类中的文本字段 JFrame 表单获取信息

user-interface - 使用浏览器获取桌面 UI

ios - 如何将xib的项目变成纯代码的项目?

ios - UIView 隐藏/显示动画

ios - MonoTouch 将带有 alpha 的彩色 UIImage 转换为灰度和模糊?

ios - 在 iOS 中当设备语言为阿拉伯语时显示英文键盘和类型