Tableview编辑模式下禁用TextField

Posted

技术标签:

【中文标题】Tableview编辑模式下禁用TextField【英文标题】:Disable TextField in editing mode of Tableview 【发布时间】:2014-05-07 11:51:06 【问题描述】:

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

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

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

我做了什么: 如果用户单击任何按钮,如果表格处于编辑模式,我在按钮的操作方法中什么也不做,这对按钮来说很好。

if ([tableView isEditing]) 
        return;
    

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

有没有一种方法可以让我在进入编辑模式时禁用交互并在退出编辑模式时启用。

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

【问题讨论】:

cell.textField.userInteractionEnabled=!tableView.isEditing; 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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;

    

【讨论】:

【参考方案3】:

如果文本字段在表格视图中,请使用以下代码禁用编辑

[yourTextField endEditing:YES];

【讨论】:

以上是关于Tableview编辑模式下禁用TextField的主要内容,如果未能解决你的问题,请参考以下文章

TableView:填充可编辑的 TextField 容器

TextField 正在阻止 TableView 滚动

UITableView 禁用“删除”确认

SwiftUI - TextField 在 macOS 上的 List 中被禁用(不可编辑)

SwiftUI Textfield - 如何在编辑模式下设置文本字段的背景颜色以清除

使用 tableView 和 textField 制作个人资料页面