iOS - Как передать Touch Event в Superview? - PullRequest
0 голосов
/ 19 марта 2019

Я реализовал не прокручиваемый tableView на моем viewController.На моем viewController я установил функциональность touchesBegan: *

Я хочу, чтобы он срабатывал при касании моего tableView, но я до сих пор не понял, как это сделать.

ЛюбойИдея, как мне это сделать?

1 Ответ

1 голос
/ 19 марта 2019

Я нашел два решения:

  1. Если вашему tableView не нужно обрабатывать сенсорные события, вы можете отменить выбор checkBox «Взаимодействие с пользователем включено» в раскадровке, тогда superView tableView будет обрабатывать touchEvent.
  2. В случае, если вам нужно обработать событие в ячейке, вы можете написать такой код в подклассе UITableViewCell, который будет искать следующий респондент, пока не найдет ViewController:
class CustomCell: UITableViewCell {
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)

        var responder: UIResponder? = self
        var vc: UIViewController?

        while vc == nil {
            if responder is UIViewController {
                vc = responder as? UIViewController
                break
            }
            responder = responder?.next
        }

        vc?.touchesBegan(touches, with: event)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...