snj*_*mhj 6 iphone uitableview ios swift
我的TableView有3个部分,每个部分有4或9个单元格.每个Cell都有一个Label和TextField.在开始编辑每个部分的索引2处的单元格时,我重新加载现在将包含9个单元格的部分(将模型更新为dequeueCell,以便再添加5个单元格).
tableView按预期滚动(将文本字段显示到屏幕的可见部分)以用于该部分的未展开状态.但是在我通过开始编辑任何部分的索引2处的单元格的文本字段来添加单元格之后,tableView会滚动以隐藏文本字段.一旦任何部分扩展了单元格数量,就会对tableview中的任何单元格进行奇怪的滚动.此外,虽然发生了奇怪的滚动,但是重新加载了tableView(这导致焦点远离文本字段).我已经包含tableView.reloadSection(_:)在didBeginEditing(:_)单元格的自定义委托中.我在iOS 9和10中看到过这个问题
对不起解释不好.谢谢
继承人Github Repo
PS我正在使用Swift 3和Xcode 8.3.3以及部署目标iOS 10
请不要在Swift 4和Xcode 9中建议回答
您需要再次将文本字段设置为第一响应者,重新加载部分文本字段后不再保留第一响应者。
您可能需要更改类似的内容 -
func didBeginEditing(textField: UITextField, cell: UITableViewCell) {
guard let indexPath = tableView.indexPath(for: cell) else { return }
if indexPath.row == 2 && !expandedSectionData[indexPath.section] {
tableView.beginUpdates()
expandedSectionData[indexPath.section] = true
tableView.reloadSections(IndexSet(integer: indexPath.section), with: .automatic)
tableView.endUpdates()
// after tableview is reloaded, get cell again
let cell = tableView.cellForRow(at: IndexPath(row: 2, section: indexPath.section)) as? TestCell
cell?.textField.becomeFirstResponder()
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过运行这个,对我来说看起来不错。
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |