Как сделать scrollview, чтобы передать сенсорное событие суперпредставлению? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь создать UITableViewCell с горизонтальной прокруткой UIScrollView.Как убедиться, что когда пользователь касается UIScrollView, выбирается UITableViewCell.

* UITableViewCell имеет UIScrollView как подпредставление, а также некоторые другие подпредставления.Когда пользователь нажимает на не-1009 * подпредставления, ячейка выделяется, как и ожидалось.Однако, когда пользователь нажимает на UIScrollView, ничего не происходит.

UIScrollView имеет несколько вложенных видов.Пользователь может прокручивать вид прокрутки по горизонтали, как и ожидалось.

Есть ли способ, при котором пользователь нажимает на UIScrollView, UIScrollView обрабатывает событие касания, но когда пользователь нажимает на UIScrollView, передает событие в суперпредставление?

Редактировать - я попытался переопределить touchesEnded(_:with:) следующим образом -

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    superview?.touchesEnded(touches, with: event)
}

Не сработало

Во-вторых, я попытался добавить UITapGestureRecognizer к просмотру прокрутки и проверить, обнаруживает ли касания.Это действительно обнаруживает сигнал.Однако, чтобы выбрать UITableViewCell, мне нужно получить соответствующий UITableViewCell для просмотра прокрутки, найти его indexPath и затем с помощью UITableView выбрать этот indexPath.

Я надеюсь, что естьболее простой способ выполнить то, что я пытаюсь достичь.

1 Ответ

0 голосов
/ 25 декабря 2018

Я решил проблему, добавив UITapGestureRecognizer к scrollView.

В функции, которая вызывается, когда пользователь нажимает на представление прокрутки, я программно выбираю строку следующим образом -

guard let indexPath = tableView.indexPath(for: cell) else { return }
tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)
tableView(tableView, didSelectRowAt: indexPath)
...