Поймать сенсорные события в любом месте на экране в определенных видах? - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть меню, которое я хотел бы автоматически скрывать, если оно неактивно по прошествии определенного времени. Это меню состоит из иерархии UIViewControllers, которые представляют различные виды.

Я думаю о том, как запустить таймер, который делает недействительным и запускается снова при каждом касании.

Можно ли перехватить все сенсорные события в наборе UIViews? Возможно, просто оставьте логическое значение и используйте главное окно UIWindow для отслеживания событий касания?

EDIT:

Мое приложение - это своего рода приложение для киоска с основным экраном и меню. Когда меню открыто, я хочу, чтобы оно запускало таймер автоматического отключения, который сбрасывается после любого прикосновения на весь экран меню. Меню отображается по всему экрану модально.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Один из способов убедиться в этом - создать подкласс UIApplication и переопределить метод - (void)sendEvent:(UIEvent *)event, каждое событие касания, происходящее в вашем приложении, проходит через этот метод, и вы можете проверить тип UIEvent, чтобы увидеть, является ли он UIEventTypeTouches, и сбросить его.таймер

Еще один способ сделать это - добавить прозрачный слой поверх всего пользовательского интерфейса, доступного пользователю, и переопределить hitTest:withEvent:.

0 голосов
/ 29 февраля 2012

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

-touchesBegan:withTouches

, а затем отправить на. nextResponder тот же метод.

...