Касания должны отменить, функция для UITableView не вызывается
У меня есть табличное представление с UIImage и некоторыми объектами UIButton в каждой ячейке TableView. Когда я прокручиваю таблицу, в целом она работает довольно хорошо. Однако, если я касаюсь одного из элементов UIButton для прокрутки представления таблицы, UIButton, кажется, перехватывает касания, и представление таблицы не прокручивается. Вместо этого выбираются элементы UIButton. Я хотел бы иметь возможность прокручивать представление таблицы, даже когда пользователь нажимает кнопки при запуске прокрутки. Итак, я искал здесь решения, пробовал следующее.
extension UITableView {
override public func touchesShouldCancel(in view: UIView) -> Bool {
print("the touchesShouldCancel function is called.")
if view is UIButton {
return true
}
return super.touchesShouldCancel(in: view)
}
}
Однако это не работает. Функция даже не вызывается всякий раз, когда я прокручиваю таблицу. Что мне здесь не хватает? Буду очень признателен за ваш вклад. Спасибо всем.
2 ответа
Подкласс UITableView
Установить tableView canCancelContentTouches
к true
согласно документации Apple
Представление прокрутки не вызывает этот метод, если значение свойства canCancelContentTouches равно false.
class YourTableView:UITableView {
override func awakeFromNib() {
canCancelContentTouches = true
delaysContentTouches = false
}
override func touchesShouldCancel(in view: UIView) -> Bool {
}
}
Вам нужно сделать UITableView
подкласс
class SubTbl:UITableView {
// add your method
}
Затем назначьте его этой таблице в IB или используйте в коде