Меню UIView поверх UIScrollView
Хорошо, это должно быть простым заданием, но оно сводило меня с ума.
Все, чего я пытаюсь добиться, - это UIScrollView, который будет отображаться за статичными прозрачными панелями инструментов на боковой и нижней частях экрана. В настоящее время структура настроена таким образом, что scrollView (подкласс UIScrollView) и оверлей (подкласс UIView) являются подвидами RootViewController.
scrollView = [[EMDrawScrollView alloc]initWithFrame:CGRectMake(0, 0, winSize.width, winSize.height)];
scrollView.userInteractionEnabled = YES;
[self.view addSubview:scrollView];
overlay = [[EMDrawOverlayView alloc]initWithFrame:CGRectMake(0, 0, winSize.width, winSize.height)];
overlay.userInteractionEnabled = NO;
[self.view addSubview:overlay];
ПРОБЛЕМА заключается в том, что если я включаю overlay.userInteractionEnabled, все касания переходят на слой и не могут попасть в scrollView. Но если я отключаю взаимодействие с пользователем, scrollView работает правильно, но я не могу взаимодействовать с оверлеем.
Что касается обработки касаний, я собираю их с помощью RootViewController и отправляю их нужному объекту следующим образом:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *t1 = [[[event allTouches]allObjects]objectAtIndex:0];
CGPoint loc = [t1 locationInView:self.view];
if (CGRectContainsPoint(overlay.rightToolbar.frame, loc)) {
overlayTouched = YES;
[overlay touchesBegan:touches withEvent:event];
} else {
overlayTouched = NO;
[scrollView touchesBegan:touches withEvent:event];
}
}
У меня есть ощущение, что одним из исправлений будет установка панелей инструментов в качестве отдельных UIViews и добавление их в качестве подвидов в View Controller, чтобы наложение не занимало весь экран, но я бы хотел избежать этого, если есть другой способ.
1 ответ
Хорошо... Похоже, что нет простого ответа на этот вопрос, поэтому я решил решить эту проблему, выполнив, как я уже говорил в этом вопросе, добавив каждое наложение в виде UIView, размер кадра которого составляет лишь часть от размер его супер зрения.
В конце концов это сработало хорошо, потому что я смог обнаружить касания. Начал касания, в зависимости от того, в каком представлении это было, а также касания, перемещенные и касания, и они остались в этом представлении, что давало мне большой контроль над взаимодействием с пользователем.