Как получить первого респондента определенного типа? - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу пройти через цепочку респондента, чтобы найти первого респондента, который имеет тип UIPageViewController. Я написал расширение для UIResponder, но оно всегда возвращает ноль, хотя, когда я печатаю цепочку респондента другой функцией, она правильно печатает, что UIPageViewController на самом деле находится в цепочке респондента

extension UIResponder {
    func printResponderChain(starting responder: UIResponder?) {
        guard let responder = responder else { return }
        print(responder)
        printResponderChain(starting: responder.next)
    }

    func firstResponder<T: UIResponder>(starting responder: UIResponder?) -> T? {
        guard let responder = responder else { return nil }
        if let t = responder as? T {
            return t
        }
        return firstResponder(starting: responder.next)
    }
}

Я звонювышеуказанные функции из UIViewController, которые управляются UIPageViewController

...