Невозможно переслать события UITouch на мой контроллер представления - PullRequest
0 голосов
/ 06 мая 2010

У меня есть настройка UISplitViewController с пользовательским представлением, добавленным как подпредставление представления (UILayoutContainerView) контроллера разделенного представления. Я пытаюсь переслать события прикосновения от моего настраиваемого контроллера представления к основному и подробному представлениям, но следующее (что было предложено здесь в другом потоке), похоже, не имеет никакого эффекта:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{ UITouch * touch = [касается любого объекта]; // Делаем что-то

[self.nextResponder touchesBegan:touches withEvent:event];

}

(я не смог правильно отформатировать)

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

Как я могу заставить свои контроллеры основного и подробного вида получать события?

Редактировать : Даже если я напрямую вызываю 4 метода касания на моем контроллере детального просмотра, касания не обрабатываются должным образом.


Ответы [ 3 ]

0 голосов
/ 07 мая 2010

Хотя в документации Apple говорится, что UIViewController должен входить в цепочку респондентов, у меня всегда были проблемы с выполнением этого вызова. Мое решение состояло в том, чтобы создать подкласс UIView с помощью - (id) touchDelegate ivar и этими методами выше. Затем просто вызовите эти методы для делегата. Грязный, но он работает на меня.

Вот официальный документ Apple, если вам интересно ...

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/EventHandling.html

0 голосов
/ 07 мая 2010

Мне удалось получить сенсорные события, не мешая нормальному потоку событий, добавив подкласс UIGestureRecognizer к представлению контроллера разделенного представления.

Из документов:

Объекты UIGestureRecognizer не находятся в цепочке респондента, но наблюдают прикосновения, проверенные на попадание, к их представлению и подпредставлениям представления.

0 голосов
/ 06 мая 2010

Если это просто подпредставление, попробуйте запустить:

[self.superview touchesBegan:touches withEvent:event];

Это должно передать его непосредственно представлению над ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...