У меня есть два вида, основной вид, где я использую CALayers для анимации. Этот основной слой обрабатывает события касания touchsBegan, touchesMoved и touchesEnded.
Второе представление - это информационное представление, которое имеет собственное перо и содержит инструкции для приложения. Когда пользователь дважды нажимает кнопку на главном экране, я переворачиваю информационный экран на место ...
if (infoView == nil) {
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"InfoView" owner:self options:nil];
infoView = [ nibViews objectAtIndex: 0];
[infoView retain];
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:[self view] cache:YES];
[[self view] addSubview:infoView];
[UIView commitAnimations];
Когда пользователь нажимает кнопку в информационном окне, я возвращаю основной вид на место с помощью ...
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[self view] cache:YES];
[infoView removeFromSuperview];
[UIView commitAnimations];
Проблема, с которой я столкнулся, заключается в том, что, когда я нахожусь в информационном представлении, касания все еще принимаются главным представлением (которое было отключено из поля зрения). Кнопки и текстовые поля в информационном представлении правильно реагируют на прикосновения.
Итак, вопрос в том, как отключить основной вид от получения сенсорных событий, когда информационное представление перевернуто на место?
UPDATE:
Кажется, я решил свою проблему, но в процессе создал новую проблему. Я пытаюсь управлять двумя UIVIews с помощью одного UIViewController. Проблема, с которой я столкнулся, заключалась в том, что контроллер основного вида загружал основное представление, и когда я переключал представления, я добавлял информационное представление как подпредставление основного представления. Эта иерархия, по-видимому, приводила к тому, что касания, которые не использовались в видимом информационном представлении, передавались в главное представление.
Я решил эту проблему, заставив контроллер основного вида загрузить представление контейнера. Затем основной вид был загружен как подпредставление контейнера. Когда я перевернул информационное представление, я добавил его как подпредставление контейнера. Неиспользуемые касания, возникающие в информационном представлении, теперь передаются в контейнерное представление, и основное представление их никогда не видит.
Но я создал новую проблему. Когда основной вид виден, он получает события касания только в верхней части вида. Я могу приземлиться в верхней части представления и перетащить в нижнюю часть и получить события касания и касания. Я просто не получаю события приземления в нижней части.
Любая помощь будет оценена.