Используя советы из других ответов и читая документацию Apple, я создал эту простую библиотеку для решения вашей проблемы:
https://github.com/natrosoft/NATouchThroughView
Это облегчает рисование представлений в Интерфейсном Разработчике, которые должны передавать касания основному представлению.
Я думаю, что метод swizzling является излишним и очень опасным в производственном коде, потому что вы напрямую возитесь с базовой реализацией Apple и вносите изменения в масштабах всего приложения, которые могут вызвать непредвиденные последствия.
Существует демонстрационный проект, и, надеюсь, README хорошо объяснит, что делать. Чтобы обратиться к OP, вы должны изменить прозрачный UIView, который содержит кнопки для класса NATouchThroughView в Интерфейсном Разработчике. Затем найдите чистый UIView, который перекрывает меню, которое вы хотите, чтобы можно было нажать. Измените этот UIView на класс NARootTouchThroughView в Интерфейсном Разработчике. Он даже может быть корневым UIView вашего контроллера представления, если вы намерены передать эти прикосновения к базовому контроллеру представления. Посмотрите демонстрационный проект, чтобы увидеть, как он работает. Это действительно довольно просто, безопасно и неинвазивно