如果文本字段打开键盘并且textfield是tableView的成员,那么它将能够滚动tableView以便能够看到最后一项,键盘将不会隐藏该项目。
如何? UITableView继承自UIScrollView。我猜开启键盘会增加内容偏移量吗?我是对的吗?
如果textfield是scrollView的一部分,而不是tableView,则不会发生此效果,并且键盘可以隐藏位于scrollView下半部分的其他控件。
如果我想看看与使用tableView的滚动视图相同的效果,我应该手动设置内容偏移吗?
答案 0 :(得分:1)
是的,您必须手动设置内容偏移量。
首先注册通知
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
}
答案 1 :(得分:0)
您可以导入从https://github.com/michaeltyson/TPKeyboardAvoiding下载的TPKeyboardAvoiding类,并将UITableView类设置为TPKeyboardAvoidingTableView。