如果单元格是第一响应者并且不在屏幕上,则 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 不会被调用的主要内容,如果未能解决你的问题,请参考以下文章
如果第一个单元格,FBNativeAdsManager nextNativeAd() 会崩溃
在屏幕上滚动和返回时如何保留 UITableViewCell 的选定状态