Касания должны отменить, функция для 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 или используйте в коде

Другие вопросы по тегам