В принципе, вот моя иерархия взглядов (и я приговариваю, если это трудно читать... Я новичок здесь, поэтому предложения по отправке приветствуются)
- AppControls.xib
------- (UIView) ControlsView
----------------- (UIView) TopBar
----------------- -------------- btn1, btn2, btn3
----------------- UIView) BottomBar
----------------- -------------- slider1 btn1, btn2
--PageContent.xib
----------------- (UIView) ContentView
----------------- -------------- btn1, btn2, btn3
----------------- -------------- (UIImageView) FullPageImage
Моя ситуация заключается в том, что я хочу скрыть и показать элементы управления, когда вы нажимаете в любом месте на PageContent, который не является кнопкой, и у вас есть элементы управления, похожие на iPhone Video Player. Однако, когда элементы управления показаны, я все же хочу, чтобы вы могли нажимать кнопки на PageContent.
У меня все это работает, за исключением последнего бит. Когда элементы управления отображаются, фон элементов управления получает события касания вместо представления ниже. И отключить взаимодействие с пользователем в ControlsView отключает его всех своих детей.
Я попытался переопределить HitTest в моем подклассе ControlsView следующим образом, который я нашел в подобном сообщении:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
UIView *hitView = nil;
NSArray *subviews = [self subviews];
int subviewCount = [subviews count];
for (int subviewIndex = 0; !hitView && subviewIndex < subviewCount; subviewIndex++){
hitView = [[subviews objectAtIndex:subviewIndex] hitTest:point withEvent:event];
}
return hitView;
}
Однако на данный момент мой слайдер не работает, и большинство других кнопок, и действительно, вещи просто начинают странно выглядеть.
Итак, мой вопрос вкратце: как я могу позволить всем представлениям представления иметь события касания, в то время как фон супер-просмотра не имеет значения, а кнопки на представлениях ниже могут получать события касания.
Спасибо!