【发布时间】:2013-06-10 07:22:19
【问题描述】:
我有一个UITableView 的部分,当您点击某个部分时,该部分会展开并且有可供选择的选项,或者您可以通过UITextField 在UITableViewCells 之一中插入您自己的选项。对于那个单元格,我在tableView: cellForRowAtIndexPath: 中有这段代码来配置自定义单元格并设置第一响应者。
DataAddTVCell *dataInputcell = (DataAddTVCell *)cell;
dataInputcell.data.delegate = self;
self.dataTextfield = dataInputcell.data;
[self.dataTextfield becomeFirstResponder];
数据字段是UITextField。我将UITextField 保存在self.dataTextField 中,以便以后可以resignFirstResponder。
第一次从我的DataAddTVCell 加载和扩展部分时,它工作正常并成为第一响应者。辞去第一响应者的职务也有效。但是,当另一个部分展开时再次加载单元格时,它不会成为第一响应者。如果我点击textField,键盘显示正常,我可以像以前一样辞去第一响应者的职务。不知道为什么 textField 只能成为第一响应者一次。我也有这些委托方法并设置了 UITextFieldDelegate>
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (BOOL)becomeFirstResponder
{
return YES;
}
我怀疑这是因为我使用的是dequeueReusableCellWithIdentifier。有没有办法让它在使用它时工作?或者,如果我希望它在显示时始终成为第一响应者,我是否每次都必须创建一个新单元格?不过,总是创建这么多细胞似乎很糟糕。
【问题讨论】:
标签: ios objective-c textfield becomefirstresponder