出现键盘时的 tableView 与 scrollView 行为
tableView vs. scrollView behavior when keyboard appears
如果文本字段打开键盘并且文本字段是 tableView 的成员,那么它将能够滚动 tableView 以能够看到最后一个项目,并且键盘不会隐藏该项目。
怎么样? UITableView 继承自 UIScrollView。我想打开键盘会增加内容偏移量?我说的对吗?
如果 textfield 是 scrollView 的一部分,而不是 tableView,则不会出现此效果,并且键盘可以隐藏位于 scrollView 下部的其他控件。
如果我想看到 scrollView 和 tableView 一样的效果,我应该手动设置内容偏移量吗?
是的,您必须手动设置内容偏移量。
首先你注册通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name:UIKeyboardWillHideNotification, object: nil)
然后在你的观察者方法中。
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func keyboardWillShow(notification:NSNotification){
var userInfo = notification.userInfo!
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil)
var contentInset:UIEdgeInsets = self.scrollView.contentInset
contentInset.bottom = keyboardFrame.size.height
self.scrollView.contentInset = contentInset
}
func keyboardWillHide(notification:NSNotification){
var contentInset:UIEdgeInsets = UIEdgeInsetsZero
self.scrollView.contentInset = contentInset
}
您可以导入从 https://github.com/michaeltyson/TPKeyboardAvoiding 下载的 TPKeyboardAvoiding class 并将 UITableView class 设置为 TPKeyboardAvoidingTableView。
如果文本字段打开键盘并且文本字段是 tableView 的成员,那么它将能够滚动 tableView 以能够看到最后一个项目,并且键盘不会隐藏该项目。
怎么样? UITableView 继承自 UIScrollView。我想打开键盘会增加内容偏移量?我说的对吗?
如果 textfield 是 scrollView 的一部分,而不是 tableView,则不会出现此效果,并且键盘可以隐藏位于 scrollView 下部的其他控件。
如果我想看到 scrollView 和 tableView 一样的效果,我应该手动设置内容偏移量吗?
是的,您必须手动设置内容偏移量。
首先你注册通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name:UIKeyboardWillHideNotification, object: nil)
然后在你的观察者方法中。
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func keyboardWillShow(notification:NSNotification){
var userInfo = notification.userInfo!
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil)
var contentInset:UIEdgeInsets = self.scrollView.contentInset
contentInset.bottom = keyboardFrame.size.height
self.scrollView.contentInset = contentInset
}
func keyboardWillHide(notification:NSNotification){
var contentInset:UIEdgeInsets = UIEdgeInsetsZero
self.scrollView.contentInset = contentInset
}
您可以导入从 https://github.com/michaeltyson/TPKeyboardAvoiding 下载的 TPKeyboardAvoiding class 并将 UITableView class 设置为 TPKeyboardAvoidingTableView。