Xcode 11.4 и iOS 13.4 ломает цели - C Категории в проекте - PullRequest
0 голосов
/ 26 марта 2020

У меня есть проект, кодовая база которого находится в Objective- C. Начиная с iOS 13, из-за изменений в modalPresentationStyle, приложение перешло в новое поведение modalStyles. В связи с требованиями компании и клиента, modalPresentationStyle должен оставаться в полноэкранном режиме.

Чтобы исправить это пару месяцев go, мы создали файл Objective- C Category, который расширяет функциональность UIViewController. В этом классе мы реализовали два метода, которые будут наследоваться в каждом v c в проекте:

- (UIModalPresentationStyle)modalPresentationStyle
{
    return UIModalPresentationFullScreen;
}

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

Добавив эти два метода в категорию Obj C, давайте добавим эту конфигурацию только один раз, в этот файл, и он автоматически копируется в VC. Мы не хотели писать эти методы в каждом v c, они пишутся только в том случае, если необходимо добавить исключение.

Это работало для нас в версиях, предшествовавших обновлению этой недели.

После обновления Xcode и iOS до 11.4 и 13.4 соответственно поведение этой категории нарушилось. Теперь эти методы автоматически не вызываются контроллерами представления, когда они создаются.

Я не знаю, связано ли это с записью о выпуске, в которой говорится:

«Создание файла категории Objective- C путем выбора« Файл »>« Создать » > Файл больше не создает файл, который включает в себя импорт платформы AppKit. (55977950) (FB7346800) "

Это сломало множество проектов, которые необходимо обновить в ближайшие дни.

1 Ответ

0 голосов
/ 31 марта 2020

У меня была такая же проблема , использование class_replaceMethod может решить проблему. Если версия вашего кода xcode не 11.4, то это не проблема:

[self swizzleInstanceSelector:NSSelectorFromString(@"modalPresentationStyle") withSelector:@selector(uiviewController_modalPresentationStyle)];
- (UIModalPresentationStyle)uiviewController_modalPresentationStyle {
    return UIModalPresentationFullScreen;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...