Спасибо за ссылку, я думал об этом, но swizzling ведь тоже не лучший вариант, много читал о нем нехорошего. Что это сравни вуду и недокументированному хаку, а также что Swizzling has become a no-no and when being used will lead to rejection of an iOS app from iTunes
Не знаю, что там насчет вуду и хаков, свиззлинг — вполне нормальное средство при соблюдении нескольких условий. Необходимо перекрывать только публичные методы, не изменять собственного состояния объекта и однократно вызывать оригинальный метод in any case.
В отличие от этого подхода, перекрытие через категории — это undefined behavior.
если точный код hitTest нигде не опубликован, то я уверен, что вы неправы
например, проверка на pointInside имхо бесполезна, потому что hitTest вызывается только тогда, когда в этой точке уже сработал pointInside
О боже. Method swizzling это следствие всей прелести obj-c runtime и каждый разраб должен уметь готовить его с закрытыми глазами.
Оверрайд с помощью категорий это UB.
Т.е вместо того, чтобы поймать за шкирку контейнер вью и заменить класс в рантайме на нужный подкласс с таким пропускным поведением, Вы решили воспользоваться Undefined Behavior и поменять поведение hitTest во всех UIView.
О какой черной коробке вообще может идти речь, если она модифицирует метод во всей системе?
PS: Apple не банит и никогда не банила за использование функций obj-c runtime, откуда Вы это взяли.
Я отказался от использования методов UIPercentDrivenInteractiveTransition по ряду причин, основной причиной было то, что если использовать cancelTransition: во время свайпа вниз, то это не позволит работать с навигацией вне модального окна, то есть не позволит ничего открыть\перейти в fromVC. Для перемещения модального окна я использую UIPanGestureRecognizer.
может стоило хотя бы заюзать `UIViewTransitioningDelegate` и `presentationControllerForPresentedViewController:presentingViewController:sourceViewController:`? чтобы там создать свой containerView и испортить pointInside только в нём
Реализуем свой dropDown ViewController (aka iOS 8 Mail app) в 200 строк