为makeFirstResponder提供屏幕外表格单元子视图的最佳方法

时间:2012-02-21 19:37:50

标签: ios uitableview

我创建了一个基于Feed的表格视图,其中包含基本上是一些表单类型元素。简化将其视为包含两种类型的元素文本框和消息。文本框类型单元格应包含UITextFields,而消息类型单元格包含不可编辑的UITextArea。

我创建了一个自定义单元格来处理每种类型并将它们渲染到表格中。到现在为止还挺好。

客户端请求了一个prev / next / done inputAccessoryView,就像safari用于html表单的那样。稍后我做了一些工作,我添加了一些功能,使prev / next跳过消息类型单元格,只在找到文本框类型单元格时调用makeFirstResponder。事情似乎仍然很顺利。

然后我在测试中添加了一条很长的消息来测试我的行高设置代码。当我尝试在此消息单元格中显示或接下来时,它失败并显示:

2012-02-21 11:34:36.642 MobileMarketing[52410:13a03] -[ContactFormTableViewController selectUpdate:]: unrecognized selector sent to instance 0x89802f0
2012-02-21 11:34:36.643 MobileMarketing[52410:13a03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ContactFormTableViewController selectUpdate:]: unrecognized selector sent to instance 0x89802f0'

我认为这是因为消息的远端和现在屏幕外的目标字段已经出列。我正在读这个。但是对于一个简单的问题还有很长的路要走。有没有人有一个很好的技术来处理这个问题?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以使用scrollToRowAtIndexPath:atScrollPosition:animated解决此问题,如下所示:https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html

如果滚动到下一个单元格,可以在尝试makeFirstResponder之前保证它存在。