У меня есть собственный проект с экраном, построенный с использованием компонента «Плоский список». Каждый визуализированный элемент представляет собой изображение, которое выполняет функцию предварительного просмотра видео.
При нажатии на предварительный просмотр видео происходит замена изображения предварительного просмотра с помощью собственного видеопроигрывателя UIView, с которым я установил мост. Видео воспроизводится, и пока все хорошо.
Когда я нажимаю кнопку полного экрана, видео выходит на полный экран, как и ожидалось. Под капотом контроллер просмотра видео достигает этого, присоединяя представление к keyWindow
- (UIWindow *)topWindow {
if ([UIApplication sharedApplication].keyWindow) {
return [UIApplication sharedApplication].keyWindow;
}
return [UIApplication sharedApplication].windows.firstObject;
}
Затем далее в методе переключения полного экрана
[self.topWindow addSubview:self.view];
[self.topWindow makeKeyAndVisible];
Отладка иерархии представления в XcodeЯ могу видеть, что контроллер представления был вставлен как дочерний элемент UIWindow
.
Проблема
Все в этомДело в том, пока я не поменяю ориентацию устройства. Представление больше не присутствует в keyWindow, и на экране снова отображается FlatList.
В отладчике просмотра контроллер пропал:
Проблема не возникает вне FlatList
Чтобы изолировать проблему, я вывел плеер за пределы плоского списка, сделал его полноэкранным, и проблема не возникает.
Я полагаю, что проблема вызвана каким-то образом рендерингом плоского списка, если он работает правильно вне его.
Может кто-нибудь может пролить свет на основную причину и есть лиспособ предотвратить это?
Редактировать
Просто, чтобы было ясно, функция клавиш настроена правильно в FlatList, поэтому повторный рендеринг не должен вызывать этого.