Запретить подсветку UITableViewCells при панорамировании - PullRequest
0 голосов
/ 07 июня 2019

Я использую UIViewController, который содержит ContainerView.Внутри ContainerView у меня есть UITableViewController.У меня есть PanGestureRecognizer в моем UIViewController, который я использую для его отклонения.Теперь проблема, с которой я столкнулся, заключается в том, что при панорамировании для закрытия UIViewController элементы TableViewCell внутри UITableViewController, которые затрагиваются, на короткое время подсвечиваются.

Я отключил прокрутку в своем табличном виде, так как он мне не нужен.

Я добавил это в .began моего обработчика панорамирования, но это не имело никакого эффекта:

myTableView.isUserInteractionEnabled = false

Я также попытался:

myGestureRecognizer.cancelsTouchesInView = true

, но касания все ещепередается в TableView и вызывает выделение ячеек.Есть ли какое-то решение для этого?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Я закончил, используя это:

myGestureRecognizer.delaysTouchesBegan = true

Это может быть полезно не в каждой ситуации, но для моего TableView это предотвращает появление бликов.

0 голосов
/ 07 июня 2019

Можно попытаться немедленно отменить выбор строк, выбранных в методе делегата для didSelectRow.

extension MyViewController: UITableViewDelegate {
    public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }
}

Запрет на выделение ячеек при выборе. По моему опыту, это довольно распространенная практика.

РЕДАКТИРОВАТЬ: Моя ошибка, неправильно прочитал вопрос. В этом случае вы можете рассмотреть возможность использования делегата tableView scrollView, чтобы определить, когда вы прокручиваете, и отключить взаимодействие в отдельных ячейках , например, так:

class ViewController: UIViewController {

    private var areCellsDisabled = false {
        didSet {
            tableView.reloadData()
        }
    }

    // Rest of your view controller logic here...

}

extension ViewController: UITableViewDelegate {


    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        areCellsDisabled = true
    }

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        areCellsDisabled = false
    }

}

extension ViewController: UITableViewDataSource {

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // Configure/dequeue the cell, etc.
        if areCellsDisabled {
            cell.isUserInteractionEnabled = false
        } else {
            cell.isUserInteractionEnabled = true
        }
        return cell
    }

}

Впрочем, это может быть проблемой. Дайте мне знать, если это поможет.

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