Ios Swift:TableView滚动到位置

Ios Swift:TableView滚动到位置,ios,swift,uitableview,Ios,Swift,Uitableview,也许这是错误的做法,所以请告诉我正确的方法,如果它是错误的。我在滚动视图上有一个表视图。大多数单元格都有一个文本字段,单击该字段可显示键盘。我遇到的问题是,滚动视图底部的单元格最终会卡在键盘后面 // I build the tableView self.shippingTableView = UITableView(frame: CGRectMake(0, 5, self.view.frame.width, CGFloat(tableViewHeight))) self.shippingTab

也许这是错误的做法,所以请告诉我正确的方法,如果它是错误的。我在滚动视图上有一个表视图。大多数单元格都有一个文本字段,单击该字段可显示键盘。我遇到的问题是,滚动视图底部的单元格最终会卡在键盘后面

// I build the tableView
self.shippingTableView = UITableView(frame: CGRectMake(0, 5, self.view.frame.width, CGFloat(tableViewHeight)))
self.shippingTableView.delegate = self
self.shippingTableView.dataSource = self
self.shippingTableView.scrollEnabled = true
self.scrollView.addSubview(self.shippingTableView)

// Create some delegate methods
// I know i'm not reusing cells yet but will update later.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.accessoryType = UITableViewCellAccessoryType.None

    let textField = UITextField(frame: CGRectMake(10, 0, cell.frame.width, cell.frame.height))
    textField.delegate = self
    cell.contentView.addSubview(textField)
    return cell
}
现在,通过上面的代码,我在页面上看到了视图,如果我选择了一个项目,键盘会显示,但单元格在后面。我创建了委托方法并尝试了以下操作。我给这个方法添加了一行打印,这样我就知道它被调用了

func textFieldDidBeginEditing(textField: UITextField) {
    let indexPath = NSIndexPath(forItem: textField.tag, inSection: 0)

    // I tried each of the following separatly, but nothing moves.
    self.shippingTableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Top, animated: true)
    self.shippingTableView.scrollToNearestSelectedRowAtScrollPosition(UITableViewScrollPosition.Middle, animated: true)
}
我猜问题是因为我在scrollView中有一个tableView,但我尝试将其更改为一个标准视图,并且遇到了相同的问题


正确答案当然不是手动滚动?

首先不要在
UIScrollView
中添加
UITableView
。下载make TPKeyboardAvoidTableView作为tableview的超类。您不必担心手动滚动tableview,TPKeyboard将自动处理

实现这一点最简单的方法是(如果可能的话),将控制器设置为
UITableViewController
的子类,因为它具有内置键盘。谢谢,这是一个很棒的库。不需要瞎忙。