РЕДАКТИРОВАТЬ: Gif добавлен для ясности
У меня есть UITableViewCell. Ячейка содержит два родственных элемента - кнопку и метку. При нажатии кнопки новый текст загружается в метку.
Если новый текст короткий и помещается на одной строке (как в верхней ячейке), все идет хорошо - вы можете нажать на эту кнопку довольно быстро, как вам хочется.
Но если новый текст длинный и должен заполнить две или более строки (как в нижней ячейке), UIKit автоматически оживляет новый текст, сдвигая его вниз от верхней строки. Во время этой автоматической анимации UIKit также отключает кнопку, чтобы вы не могли с ней взаимодействовать.
Если вы попытаетесь быстро щелкнуть несколько записей в этом сценарии, он просто чувствует себя неправильно, так как кнопка не будет реагировать на каждое нажатие.
Итак, мой вопрос:
Есть ли способ включить взаимодействие с кнопкой во время этой анимации? Я могу полностью отключить его, используя UIView.setAnimationsEnabled(false)
, но тогда это будет выглядеть не так хорошо.
РЕДАКТИРОВАТЬ: так как это было запрошено, вот код, который обновляет метку. Текст обновляется в didSet всякий раз, когда изменяется модель NSManagedObject.
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
}
}
}