是否有任何方法告诉UITableView 不释放单元格何时不可见?
我问这个因为我有这个问题: 我有一个UITableView用作“插入视图”。在细胞内我有很多UITextViews。当我按下UITableView时,我将“becomeFirstResponder”发送到第一个单元格,以便在键盘打开时启动视图。这可以正常工作。
但是,如果我向下滚动,当第一个单元格变得不可见时,键盘会自动关闭。 注意:关联的UITextView是一个属性保留,它正确地保持分配,只是单元格消失,UITextView似乎辞职第一响应者。
我知道我可以检查UITextView何时返回可见并发送另一个becomeFirstResponder,但我想知道我是否可以通过第一个请求达到我的目标: - )
谢谢 问候 法比奥
答案 0 :(得分:0)
在单元格中使用tableview时通常不会释放单元格。第一次它将分配一些可见的第一次出现的单元格,之后它使用相同的单元格意味着在不同的索引路径上重用不同日期的相同单元格,你应该使用过 UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
答案 1 :(得分:0)
这里有一些我发现的新信息:
我看到键盘第一次关闭了。示例:视图已加载UITextView作为firstResponder。滚动,键盘会关闭。 但是,再次点击UITextView后,键盘会再次打开,然后再也不会关闭,即使再次滚动也是如此。
寻找理解原因,我发现了这个:
当UITextView辞职第一响应者时,我看到它发生了,因为UITableView正在搜索调用CellForRowAtIndexPath方法的特定单元格。 但是,再次点击后,CellForRowAtIndexPath仅针对其他单元格而不是所选单元格进行调用。看来,如果在UITableView设置之后将UITextView设置为第一响应者,则即使不可见,也会保留该单元格。
然后,我试图在“viewDidAppear”(在uitableview设置之后调用)中移动“becomefirstresponder”然后,神奇地,问题解决了:-) 如果内部的UITextView是第一个响应者,则不再释放该单元格。
唯一剩下的问题是:在viewDidApper中调用“becomeFirstResponder”导致键盘上的延迟显示在屏幕上。为了避免这种情况,我在viewDidLoad中调用了becomeFirstResponder,然后在viewDidAppear中我重新签名并再次调用了becomeFirstResponder。
希望这有帮助