По сути, вот моя иерархия представлений (и я прошу прощения, если это трудно прочитать ... Я новичок здесь, поэтому я с радостью принимаю предложения)
- 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;
}
Однако, в этот момент мой ползунок не работает, как и большинство других кнопок, и на самом деле, вещи просто начинают становиться странными.
Итак, мой вопрос вкратце: как я могу разрешить всем подпредставлениям вида сенсорные события, в то время как фон суперпредставления не кликабелен, и кнопки на представлениях ниже могут получать сенсорные события.
Спасибо!