Swift:TableView滚动到位置

时间:2015-09-21 12:45:48

标签: ios swift uitableview

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

// 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但我尝试将其更改为标准视图并遇到同样的问题。

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

1 个答案:

答案 0 :(得分:3)

首先不要在<div class="print-wrap has-size" data-card_id="<?=$array['card_id'];?>"> 中添加<script>var card_data['<?=$array["card_id"]?>'] = <?=json_encode($array);?>;</script> 。下载TPKeyboardAvoiding使TPKeyboardAvoidingTableView成为tableview的超类。而且您不必担心手动滚动tableview,TPKeyboard会自动处理。