Ios 如何获取键盘大小而不出错?
我的屏幕底部有一个文本视图,当用户开始编辑文本视图时,我想将其向上推。我知道如何将视图向上推,但由于屏幕大小不同,显示并不总是相同的。我想得到键盘的高度,这样当用户编辑时,文本视图就位于键盘上方。我在下面有一段代码,但当我添加以下3行代码时,应用程序无法生成,并给我一个错误。如果没有这段代码,应用程序运行得非常完美。我得到的错误是“swift编译器错误:预期声明”。这些线进入我的键盘将显示功能Ios 如何获取键盘大小而不出错?,ios,swift,Ios,Swift,我的屏幕底部有一个文本视图,当用户开始编辑文本视图时,我想将其向上推。我知道如何将视图向上推,但由于屏幕大小不同,显示并不总是相同的。我想得到键盘的高度,这样当用户编辑时,文本视图就位于键盘上方。我在下面有一段代码,但当我添加以下3行代码时,应用程序无法生成,并给我一个错误。如果没有这段代码,应用程序运行得非常完美。我得到的错误是“swift编译器错误:预期声明”。这些线进入我的键盘将显示功能 if let userInfo = sender.userInfo { if
if let userInfo = sender.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
keyboardHeight = keyboardSize.height
}
完整的代码如下所示
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}
var isShown: Bool = false
var willHide: Bool = false
var keyboardHeight: CGFloat = 0
func keyboardWillShow(sender: NSNotification) {
isShown = true
//The following 3 lines seem to be the problem. Somehow the code stops working when I add them.
if let userInfo = sender.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
keyboardHeight = keyboardSize.height
}
}
func keyboardWillHide(sender: NSNotification) {
willHide = true
}
func textViewDidBeginEditing(textView: UITextView) {
if isShown == true {
self.view.frame.origin.y -= keyboardHeight
}
}
func textViewDidEndEditing(textView: UITextView) {
if willHide == true {
self.view.frame.origin.y += keyboardHeight
}
}
你能检查一下用UIKeyboardFrameEndUserInfoKey替换UIKeyboardFrameBeginUserInfoKey吗?如果让userInfo=sender.userInfo{没有右括号,。我不愿意承认这一点,因为我看起来很愚蠢,但@MartinR是对的。。。我只是忘记了user info常量末尾的花括号。谢谢你们两位的帮助!:)