【问题标题】:UITableViewCell setEditing:animated doesn't get called if cell is the first responder and is offscreen如果单元格是第一响应者并且不在屏幕上,则 UITableViewCell setEditing:animated 不会被调用
【发布时间】:2012-11-25 10:03:08
【问题描述】:

我有一个 UITableViewCell 的子类,其中添加了 UITextField 以在编辑模式下编辑单元格的内容。 在我的自定义单元格实现中,我已经像这样覆盖了 setEditing:

-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    if ([self.textField isFirstResponder])
        [self.textField resignFirstResponder];
    NSLog(@"%@",self.textLabel.text);
    if (editing) {
        self.textLabel.hidden = YES;
        self.textField.hidden = NO;
    }else{
        self.textLabel.hidden = NO;
        self.textField.hidden = YES;
    }

    [super setEditing:editing animated:animated];
}

当我第一次调用 setEditing 时,它们都进入了编辑模式。但是,如果我尝试修改单元格并且如果该单元格离开屏幕并且我点击“完成”按钮,则该单元格仍处于编辑模式。只有已经离开屏幕的单元格。如果当我点击“完成”按钮时它在屏幕上可见,它就可以工作。

这是一个更好地描述问题的视频:video on Dropbox

【问题讨论】:

  • 好吧,你会看那个!提交错误报告,因为这是一个大问题。

标签: iphone ios xcode cocoa-touch


【解决方案1】:

你可以在你的 UITableViewController 子类中通过实现以下来解决这个问题:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{    
    [super setEditing:editing animated:animated];

    //since setEditing isn't called on cells that are offscreen do this to ensure the keyboard is dismissed.
    [self.view endEditing:editing];
}

【讨论】:

    【解决方案2】:

    当文本框离开屏幕时,您可以尝试关闭键盘

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多