如果单元格是第一响应者并且不在屏幕上,则 UITableViewCell setEditing:animated 不会被调用

Posted

技术标签:

【中文标题】如果单元格是第一响应者并且不在屏幕上,则 UITableViewCell setEditing:animated 不会被调用【英文标题】:UITableViewCell setEditing:animated doesn't get called if cell is the first responder and is offscreen 【发布时间】: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

【问题讨论】:

好吧,你会看那个!提交错误报告,因为这是一个大问题。 【参考方案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】:

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

【讨论】:

以上是关于如果单元格是第一响应者并且不在屏幕上,则 UITableViewCell setEditing:animated 不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

excel中求某个日期是第几周

如果第一个单元格,FBNativeAdsManager nextNativeAd() 会崩溃

在屏幕上滚动和返回时如何保留 UITableViewCell 的选定状态

从单独的班级辞职第一响应者

如何实现EXCEL自动判定单元格是奇数还是偶数,并且自动填充颜色?

Android表格布局格式问题