【发布时间】:2015-10-07 21:07:14
【问题描述】:
一些背景:
我正在使用UITableViewController 子类来获取一长串不同类型的单元格。所以从技术上讲,这不是对UITableViewController 或UITableView 的适当使用。但是,我正在使用大型遗留代码库 - 重构这不是一种选择。
其中一个单元,我们称之为ProductListCell,由多个视图组成(每个视图都应该是一个单元,但又是大型遗留代码库),它们以编程方式组合在一起。
当单元格的数据在cellForRowAtIndexPath: 中提供时,视图,让我们调用ProductListView 绘制在笔尖上,但以编程方式与ProductListCell 中的约束一起拍打。每个ProductListViews 都有一个UITextField。所以这个ProductListCell中有多个UITextFields。
问题: 有时,并非总是如此,当点击文本字段并出现键盘时,文本字段会被推到视线之外。
我尝试将ProductListView 中的文本字段通过superview 单元格传递到UITableViewController 子类,并观察键盘出现,然后将scrollToRectVisible: 传递给文本字段。不管有没有[self.tableView convertPoint:fromView:];,我都做到了。
我确实认为,因为未定义此 UITableViewController 中多个单元格的高度,而是根据提供给它们的数据动态地定义,它与默认的键盘外观滚动行为相混淆。
有人遇到过类似的问题吗?
编辑:我应该提到 - 我的猜测是 UITableViewController 知道如何在单元格中显示文本字段。但是当一个单元格中有多个文本字段时,我相信它只会关注单元格,而不是特别关注文本字段。
【问题讨论】:
-
您使用自定尺寸单元格吗? TVC 应滚动以显示选定的文本字段
-
@Andy 是的,当它的单元格中有文本字段时,TVC 应该知道使用文本字段转到单元格。但是当单元格中有多个 textfields 时呢?我认为 TVC 不知道要转到哪个文本字段。只是一般的单元格。
标签: ios objective-c iphone uitableview cocoa-touch