Как сделать OpenGL-просмотр и наложение UIView реагировать на одно и то же событие касания


0

У меня есть OpenGL View с спрайтами в нем, которые имеют UIViews с одинаковым положением и размером поверх представления OpenGL, чтобы сделать их доступными. OpenGL View должен иметь возможность получать события касания и UIView сверху. В моем классе UIView я переопределить Трассировку: метод withEvent так UIViews получить сенсорный ввод, в противном случае только OpenGL получает прикосновение:

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    NSEnumerator *reverseE = [self.subviews reverseObjectEnumerator]; 
    UIView *iSubView; 
    while ((iSubView = [reverseE nextObject])) 
    { 
     UIView *viewWasHit = [iSubView hitTest:[self convertPoint:point toView:iSubView] withEvent:event]; 
     if (viewWasHit) 
     { 
      return viewWasHit; 
     } 
    } 
    return [super hitTest:point withEvent:event]; 
} 

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

0

На мой взгляд, в таких случаях лучше, если только ваш основной вид получает касания, в которых вы затем проверяете, было ли затронуто какое-либо из подзонов, используя, например, CGRectContainsPoint. Если вы действительно хотите, чтобы переопределить подвиды, то я предлагаю вам переопределить методы прикосновения, чтобы вызвать методы SuperView осязания, например переопределить touchesBegin:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self.superview touchesBegan:touches withEvent:event]; 
    //do additional stuff 
} 

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