编辑:为清晰起见添加了Gif
我有一个UITableViewCell。该单元包含两个同级元素-一个按钮和一个标签。当您单击按钮时,新文本将被加载到标签中。
如果新文本很短,并且适合一行(如顶部的单元格),则一切顺利-您可以按所需的速度快得多地点击该按钮。
但是,如果新文本很长,并且必须填充两行或更多行(如底部的单元格),则UIKit会自动设置新文本的动画效果,将其从顶行向下滑动。在发生这种自动动画的同时,UIKit也禁用了该按钮,因此您无法与之交互。
在这种情况下,如果您尝试快速单击一些条目,则感觉不对,因为该按钮不会对每次按下都做出反应。
所以我的问题是:
在此动画期间,有什么方法可以启用与按钮的交互?我可以使用UIView.setAnimationsEnabled(false)
将其完全关闭,但是看起来并不好。
编辑:自从被请求以来,这是更新标签的代码。每当NSManagedObject模型更改时,文本就会在didSet中更新。
extension MasterDataSource {
private func configure(cell: UITableViewCell, for indexPath: IndexPath) {
guard let cell = cell as? MasterCell else {
fatalError("Cell Not Returned")
}
let category = categories.object(at: indexPath)
guard let exercises = category.exercises else {
return
}
guard exercises.count > 0 else {
return
}
guard let activeExercise = category.activeExercise else {
return
}
cell.model = MasterCell.Model(with: activeExercise)
}
}
class MasterCell: UITableViewCell {
@IBOutlet private weak var exerciseLabel: UILabel!
@IBOutlet private weak var nextButton: UIButton!
struct Model {
let exercise: Exercise
init(with exercise: Exercise) {
self.exercise = exercise
}
}
var model: Model? {
didSet {
guard let model = model,
let exerciseTitle = model.exercise.title else {
return
}
exerciseLabel.text = exerciseTitle
}
}
}