Scroll UITableView up when keyboard appears in swift
我有一个带7个单元格的UITableView,每个单元格内都有一个文本字段。当键盘出现时,它会隐藏最后一个单元格,因此很难看到输入的内容,直到键盘消失为止。
有人能指导我如何在键盘出现时向上滚动这个UITableView,这样我就没有这个问题了吗?
- TableView只是一个uiscrollview子类,官方文档中提供的答案可以使用developer.apple.com/library/ios/documentation/stringstextfon‌&8203;ts/…
- 这是在目标C中。如果将来有人需要的话,我现在有一个快速版本。nsnotificationcenter.defaultcenter().addobserver(self,selector:selector("keyboardwasshown:"),name:uikeyboarddidshownotification,object:nil);nsnotificationcenter.defaultcenter().addobserver(self,selector:selector("keyboardwillhide:"),name:uikeyboardwillhidenotification,object:nil);
- 然后显示如下函数体:func keyboards(sender:nsnotification)let info:nsdictionary=sender.userinfo!让kbsize:cgsize=(info.objectfookey(uikeyboardframebeginoserinfokey)?.cgrectv‌&8203;value.size)!让contentinsets:uiedgeinsets=uiedgeinsetmake(0.0,0.0,kbsize.height,0.0)tableview.contentinset=contentinsets tableview.scrollIndicatorinsets=contentinsets_
- func keyboardwill hide(sender:nsnotification)让contentinsets:uiedgeinsets=uiedgeinsetzero;tableview.contentinset=contentinsets;tableview.scrollIndicatorinsets=contentinsets;
- 最好的解决方案是:github.com/michaeltyson/tpkeyboardavointing。
试试这个:
1 2 3
| func textFieldDidBeginEditing(textField: UITextField) {
tableView.setContentOffset(CGPointMake(0, textField.center.y-60), animated: true)
} |
使用这些简单的类集https://github.com/michaeltyson/tpkeyboardavailing
如何使用:
要与UITableViewController类一起使用,请将tpkeyboadavoidingTableView.m和tpkeyboadavoidingTableView.h放到项目中,并使uiTableView在XIB中成为tpkeyboadavoidingTableView。如果您的控制器没有使用XIB,我知道要使其UITableView成为自定义类并不容易:阻力最小的路径是为其创建XIB。