События мыши NSView после добавления вложенного представления

#objective-c #cocoa #nsview

#objective-c #cocoa #nsview

Вопрос:

После добавления вложенного представления в NSView мои события мыши реагируют на область NSView за вычетом addedSubVIew. Как я могу этого избежать? Я хочу, чтобы он реагировал на все супервизии. Спасибо.

Ответ №1:

Вы также можете реализовать метод hitTest: в представлении контейнера.

 - (NSView *) hitTest: (NSPoint) aPoint {
    return [super hitTest:aPoint] ? self : nil;
}
  

Теперь только представление контейнера может получать события мыши.

Ответ №2:

Вы можете переопределить метод вложенных просмотров [NSView hitTest:] и вернуть супервизор.

 - (NSView *) hitTest: (NSPoint) aPoint {
    return [self superview];
}
  

Комментарии:

1. Спасибо, но есть ли способ получше, потому что у меня есть nsimageview, nstextfield и nstextview, и я не хочу создавать подклассы для всех них только для переопределения этого метода. Еще раз спасибо.