我在一个视图的底部有一个文本视图,如果我什么都不做,当它弹出时,它会被键盘隐藏。我所做的是,当键盘即将出现时,文本视图向上移动160点。问题是,由于尺寸不同,它在每部iPhone上的位置并不完全相同。我想知道文本视图是否可以坐在键盘上20点,而不是从"原点"向上推160点。
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
func keyboardWillShow(sender: NSNotification) {
isShown = true
}
func keyboardWillHide(sender: NSNotification) {
willHide = true
}
func textViewDidBeginEditing(textView: UITextView) {
if isShown == true {
self.view.frame.origin.y -= 160
}
}
func textViewDidEndEditing(textView: UITextView) {
if willHide == true {
self.view.frame.origin.y += 160
}
}
您可以从通知对象中获取键盘的大小。
像这样的
NSDictionary* info = [sender userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
您可以在Apple Docs 中阅读更多关于此的信息