Хм .. вы можете попробовать эту иерархию (возможно, подклассы):
UIView (container)
> UIView (semitransparent overlay)
> UIScrollview
- UIView (zoomable content)
Таким образом, наложение не масштабируется.
Сложнее то, что пользователь взаимодействует на нескольких уровнях. Это легко, если в вашем оверлее есть области, которые не должны обнаруживать касания пользователя, для этого вы просто устанавливаете свойство UIView 'userInteractionEnabled' в 'NO' для частей вида, где касания должны быть "перенаправлены" на нижележащие слои.
Но если я вас правильно понял, вам нужно что-то более сложное. Вы, вероятно, могли бы установить некоторый мастер-сенсорный контроллер в контейнере UIView, который узнает, что происходит, и затем вызывает определенные методы его подпредставлений / пересылает события.
Я не знаю всех точных методов, которые необходимо переопределить / реализовать в контейнере, но посмотрите демонстрацию tapZoom из примера кода ScrollView Suite . Это очень хороший пример.
Просто из любопытства могу я спросить, для чего используется эта модель взаимодействия?