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

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

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

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

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

if ([tableView isEditing]) {
        return;
    }

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

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

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

【问题讨论】:

  • cell.textField.userInteractionEnabled=!tableView.isEditing;

标签: ios ipad uitableview uitextfield edit


【解决方案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];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        相关资源
        最近更新 更多