在Tableview的编辑模式下禁用TextField

时间:2014-05-07 11:51:06

标签: ios ipad uitableview uitextfield edit

我正在开发一个应用程序,其中我有一个带有自定义单元格的UITableView。自定义单元格包含文本字段和按钮。

要求: 当表处于编辑模式时,应禁用文本字段/按钮(用户应该只能删除单元格而不与内容交互。用户应退出编辑模式,然后与文本字段/按钮交互)。您也可以在iPad中引用“提醒”应用程序,无法在编辑模式下编辑内容。

问题: 当表处于编辑模式时,用户仍然可以单击文本字段(键盘可见)。

我做了什么: 如果用户单击任何按钮,如果表格处于编辑模式,那么我在按钮的操作方法中不执行任何操作。

if ([tableView isEditing]) {
        return;
    }

问题出在文本字段上,在编辑模式下,我无法删除文本字段的交互。当表进入编辑模式时,不会调用cellForRow,以便我可以禁用交互。

有没有办法可以在进入编辑模式时禁用交互,并在退出编辑模式时启用。

提前谢谢你。任何指针都将不胜感激。如果您需要有关该问题的更多信息,请告诉我

3 个答案:

答案 0 :(得分:3)

您可以使用UITextField的以下委托方法:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  if ([tableView isEditing]) {
        return NO;
    } else {
     return YES;
    }
}

答案 1 :(得分:0)

1)首先重新编辑任何编辑文字字段

-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{


    for (UITableViewCell *cell in [tableView visibleCells]) {

        for (UIView *aView in cell.contentView.subviews) {

            if ([aView isKindOfClass:[UITextField class]]) {

                [aView resignFirstResponder];

                break;

            }
        }

    }
}

2)然后不允许任何文本字段进行编辑

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

    if ([tableView isEditing]) {

        return NO;

    } else {

        return YES;

    }
}

答案 2 :(得分:0)

如果表视图中的textFields

,请使用以下代码禁用编辑
[yourTextField endEditing:YES];