Возможно, это неправильный способ сделать это, поэтому, пожалуйста, покажите мне правильный путь, если это неправильно. У меня есть табличное представление на scrollview. В большинстве ячеек есть TextField, который на экране показывает клавиатуру. Проблема, с которой я сталкиваюсь, заключается в том, что ячейки в нижней части прокрутки в конечном итоге застревают за клавиатурой.Swift: TableView прокрутите до позиции
// 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)
}
Я догадался, что проблема была, потому что у меня была Tableview внутри Scrollview, но я попытался изменить это просто стандартный вид и была такая же проблема.
Несомненно, правильный ответ заключается не в том, чтобы прокручивать вручную?
Простейший способ достичь этого (если это возможно), сделать ваш контроллер подклассом 'UITableViewController', поскольку это позволяет избежать встроенной клавиатуры. –