Касания должны отменить, функция для UITableView не вызывается - PullRequest
1 голос
/ 11 июля 2020

У меня есть табличное представление с объектами 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 ]

1 голос
/ 11 июля 2020

Подкласс UITableView Установить tableView canCancelContentTouches на true согласно Документы Apple

Представление прокрутки не вызывает этот метод, если значение свойства canCancelContentTouches ложно

class YourTableView:UITableView {

    override func awakeFromNib() {
        canCancelContentTouches = true
        delaysContentTouches = false
    }

    override func touchesShouldCancel(in view: UIView) -> Bool {
        
    }
}
1 голос
/ 11 июля 2020

Вам необходимо создать подкласс UITableView

class SubTbl:UITableView {
   // add your method
}

Затем назначить его этой таблице в IB или использовать в коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...