我们可能会遇到一种需求,在tableView中的cell上面有个自适应的输入框,随着文字的输入,换行和cell的高度变化是必然的,但是cell的高度变化需要修改cell的高度才能生效,这时候,我们可以在文字变化后调用一下方法,cell的高度就会对应变化了(前提是cell的控件布局是自适应的)
tableView.beginUpdates()
tableView.endUpdates()
而在collectionView中,也有对应的方法
self?=.collectionView.performBatchUpdates({
})
之所以有这个话题,是因为如果我们调用了诸如reloadItems,reloadData之类的刷新方法,就需要去管理第一响应。你会发现,在刷新后,你调用becomeFirstResponder是不生效的,键盘并没有上来。需要延时,并且调用两次才能生效。这之中涉及到响应链和keywindow的问题。并且这样会导致键盘有个起来和落下的过程。而且会导致无法连续删除。而采用update的更新方式就不存在这个问题,当前输入框的键盘不会有任何变化(不需要在更新方法里面或外面调用任何方法)。也不会因为刷新而产生闪烁效果。正常刷新会有闪烁效果。
附一个解决刷新闪烁的方法.(performBatchUpdates不存在闪烁问题)
collect.delaysContentTouches = false
随笔记录
网友评论