Z Заказ и сенсорная система обработки являются отдельными. Z Order предназначен только для визуального макета ваших слоев. Однако система обработки касаний зависит от приоритета, назначенного при регистрации в диспетчере касания. Если вы зарегистрируете два слоя в диспетчере касаний с одинаковым приоритетом, то второй слой получит касания первым, независимо от порядка слоев Z.
Вот часть, которая действительно смутила меня, когда у меня была такая же проблема. В то время как Z Order визуально ставит верхние числа друг на друга, с касаниями все наоборот. НИЖНИЕ приоритетные номера на самом деле первыми касаются. Чтобы сохранить свое здравомыслие, я реорганизовал свой код так, чтобы, по возможности, я в любом случае добавлял слои в том же порядке, что и индекс Z, чтобы касания верхних слоев вели себя интуитивно.
Когда это невозможно, я использую систему приоритетов касания и определяю константы, чтобы не запутаться позже. Для регистрации касаний с использованием системы приоритетов используйте следующее:
-(void) registerWithTouchDispatcher {
[[TouchDispatcher sharedDispatcher] addTargetedDelegate:self priority: DEFAULT_TOUCH_PRIORITY swallowsTouches:YES];
}