Переадресация прикосновений к UINavigationController Интерактивный поп-жест не полностью работает

Я пытаюсь включить интерактивный распознаватель поп-жестов на дополнительном экране клавиатуры. Это не работает по умолчанию.

Я передал интерактивную ссылку на распознаватель жестов для всплывающих окон на свое вспомогательное представление, чтобы переслать события касания в распознаватель

Это особенно работает: название панели навигации изменяется, а фон вспомогательного представления отображает представление предыдущего контроллера, как если бы переход действительно начался. Но сам вид сверху остается на месте, даже если распознаватель жестов завершает отслеживание.

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

Есть идеи, чего не хватает?

1 ответ

Решение

Похоже, что невозможно повторно использовать экземпляры сенсорных событий в цепочке респондента. Однажды sendEvent: на UIWindow называется, уже есть определенный вид, владеющий прикосновением, поэтому нет смысла пересылать UIEvent экземпляры для других взглядов или их распознаватели жестов.

Однако собственник может пересылать события на nextResponder()s (например: один из распознавателей жестов, прикрепленный к этому представлению или к одному из подпредставлений представления)

Единственный шанс перенаправить касания в другое представление (из другой иерархии представлений) или в распознаватели жестов другого представления - до UITouch создание объекта: т.е. на UIWindow уровень во время hitTest:withEvent: вызов метода, который вызывает pointInside:withEvent: метод

Во всяком случае, я не уверен, можно ли перенаправить касания с одного UIWindow другому. Обновлю ответ позже

http://www.russbishop.net/uitouchtypestylus?utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS_Dev_Weekly_Issue_225

http://smnh.me/hit-testing-in-ios/

Другие вопросы по тегам