Мне удалось решить эту проблему, переопределив следующий метод в главном окне:
- (void)sendEvent:(UIEvent*)anEvent
Я также проверяю правильность события с помощью
if ([[[anEvent allTouches] anyObject] phase] == UITouchPhaseBegan)
Я делаю то же самое для UITouchPhaseMoved
и UITouchPhaseEnded
, выполняю свой код и отправляю [super sendEvent:anEvent];