Передача событий касания в представление UIViewController

Я пытаюсь настроить приложение iPad для отображения экрана приложения на дополнительный экран через кабель VGA. Из-за проблем с производительностью я хочу, чтобы мое представление отображалось только на дополнительном экране, но по-прежнему фиксировать события касания через экран iPad.

Мой текущий метод заключается в использовании двух окон UIWindows: одного для экрана, подключенного к VGA, который показывает все представления, анимации и т. Д., И другого UIWindow для экрана iPad, который фиксирует события касания. Это отлично работает с точки зрения производительности, и я могу регистрировать события касания, полученные на экране iPad.

Но по какой-то причине я не могу передать методы touchesBegan:, touchesEnded: и т.д. своему UIViewControllers и заставить их правильно реагировать. Если я отправлю его прямо в UIViewController, я могу захватить их, переопределив события касания на UIViewController, но это полезно только для фиксации касаний на фоне, а не для кнопок и т. Д., Которые добавляются в UIViewController.

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

Я, должно быть, упускаю что-то простое, какие-нибудь идеи?


person Domestic Cat    schedule 05.10.2010    source источник


Ответы (1)


У меня тоже была эта проблема. Решить вашу проблему очень просто. Вы можете просто перезаписать метод hitTest UIView, например:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent*)event
{
  return [[[[UIApplication sharedApplication] delegate] secondWindow] hitTest:point withEvent:event];
}

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

person Dskobg    schedule 26.11.2010