Этот код вызывается при касании подпредставления (imageSlideshow
):
imageSlideshow.didTap = { [weak self] in
guard UIApplication.shared.sendAction(#selector(ImageCarouselViewResponder.didTapImageCarousel(sender:)), to: nil, from: self, for: nil) else {
assertionFailure("No target for ImageCarouselViewResponder.didTapImageCarousel(sender:)")
return
}
…
Это работает, как и ожидалось, как видно из этого отладочного вывода:
(lldb) po UIApplication.shared.sendAction(#selector(ImageCarouselViewResponder.didTapImageCarousel(sender:)), to: nil, from: self, for: nil)
true
Однако, когда я пытаюсь запросить цель с тем же селектором, это nil
:
(lldb) po UIApplication.shared.target(forAction: #selector(ImageCarouselViewResponder.didTapImageCarousel(sender:)), withSender: self)
nil
Кроме того, я добавил расширение для обхода дерева респондента, чтобы найти первого респондента, и онов этом случае возвращает nil
.
Как работает sendAction(…)
, если нет первого респондента?