1.在viewdidload中,注册如下监听:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
2. 实现对应的监听触发方法:
func keyboardWillShow(note:NSNotification){
var userInfo:NSDictionary = note.userInfo!
var aValue:NSValue = userInfo.objectForKey("UIKeyboardFrameEndUserInfoKey") as! NSValue
var keyboardRect:CGRect = aValue.CGRectValue()
keyboardRect = self.view.convertRect(keyboardRect, fromView: nil)
var keyboardTop:CGFloat = keyboardRect.origin.y
var newTextViewFrame:CGRect = self.view.bounds
newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y
var animationDurationValue:NSValue = userInfo.objectForKey("UIKeyboardAnimationDurationUserInfoKey") as! NSValue
var animationDuration:NSTimeInterval? = 0.5
animationDurationValue.getValue(&animationDuration)
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(animationDuration!)
self._chatView.frame = newTextViewFrame
UIView.commitAnimations()
}
func keyboardWillHide(note:NSNotification){
var userInfo:NSDictionary = note.userInfo!
var animationDurationValue:NSValue = userInfo.objectForKey("UIKeyboardAnimationDurationUserInfoKey") as! NSValue
var animationDuration:NSTimeInterval? = 0.5
animationDurationValue.getValue(&animationDuration)
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(animationDuration!)
self._chatView.frame = self.view.bounds;
UIView.commitAnimations()
}
3.界面退出时,卸载监听,在
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
}
本文介绍了在iOS Swift应用中,如何监听并响应键盘显示和隐藏事件,动态调整TableView的高度,确保键盘弹出时不会遮挡输入框。通过在`viewDidLoad`中注册键盘通知,并实现`keyboardWillShow`和`keyboardWillHide`方法来改变TableView的frame,从而实现键盘出现时自动滚动到合适位置。同时在`viewWillDisappear`中移除键盘通知,避免内存泄漏。
2195

被折叠的 条评论
为什么被折叠?



