如何防止我的表格单元格的textview在编辑完成后可编辑?
所以这是一个有趣的问题。我有自定义tableviewcells,其中包含一个文本字段。当在我的cellForRowAtIndexPath我有一个if语句来确定小区的文本字段是否不应该editable-它看起来像这样:如何防止我的表格单元格的textview在编辑完成后可编辑?
(self.isEditing) ? [infoCell.textField setEnabled:YES] : [infoCell.textField setEnabled:NO];
这实际上工作得很好 - 除了我遇到的问题。它使得当显示tableview时,行的文本字段不能被编辑。当用户单击“编辑”将其置于编辑模式时,则会启用文本字段进行编辑。
问题:当我编辑字段,然后单击“完成”,它可以追溯到到正规的tableview,但键盘保持可见和最后一个单元格的文本字段我是编辑继续编辑。
应该发生什么:键盘应该消失,并且所有单元格的文本字段都不应再可编辑。
任何有关可能出错的想法?需要寻找的东西?
谢谢!
不幸的是,禁用UITextField不会关闭键盘。你需要保留一个指向你当前UITextField的指针。首先,在你的头文件中创建一个实例变量:
UITextField *currentTextField;
然后,实施UITextFieldDelegate协议。肮脏的工作将在下面的方法来完成:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
currentTextField = textField;
}
最后,当你准备取消键盘和禁用文本框,只需拨打:
[currentTextField resignFirstResponder];
[textField1 setEnabled:NO];
[textField2 setEnabled:NO]; //ad nauseum
祝你好运!
我发现self.isEditing是不可靠的。如果您正在编辑单个单元格,则它与您处于“编辑模式”时的工作方式不同。
我做了什么来解决它,只要我想对所有其他单元格做些什么,我只是遍历我的表视图的visibleCells方法并手动调整它们。你必须考虑新单元变得可见时会发生什么,但这取决于你的实现。
NSArray *visibleCells = [self.tableView visibleCells];
for (UITableViewCell *cell in visibleCells) {
[cell doSomething];
}
PS - 显然你可能想通过可见方块迭代时跳过有问题的单元格。取决于你在做什么。
感谢您的建议。我玩过它,但我认为它不会为此工作。单元格是自定义单元格,它是我需要启用或禁用的单元格内的文本字段,而不是单元格本身。目前我在cellForRowAtIndexPath中执行此操作,并且在从编辑模式切换到常规模式时,它对于正在编辑的单元格不起作用...非常奇怪。顺便说一下,你说得对self.isEditing是不可靠的,我使用我自己的isEditing变量。 – Brad 2010-05-20 14:32:06
这是完美的! – Brad 2010-05-20 15:52:28