IOS 26: панель вкладок становится видимой при открытии вкладки просмотра файлов (но не в iOS 18) — как принудительно откIOS

Программируем под IOS
Ответить
Anonymous
 IOS 26: панель вкладок становится видимой при открытии вкладки просмотра файлов (но не в iOS 18) — как принудительно отк

Сообщение Anonymous »

У меня есть iOS-приложение на основе вкладок (пользовательский менеджер вкладок, а не стандартный поток UITabBarController), в котором при открытии вложения создается новая вкладка «Просмотр файлов» и происходит переключение на нее.
В iOS 18 и более ранних версиях экран просмотра файлов работает в полноэкранном режиме, а нижняя панель вкладок не отображается.
В iOS 26, когда я открываю файл, нижняя панель вкладок становится видимой на экране средства просмотра файлов (похоже, средство просмотра файлов не полностью покрывает панель вкладок/изменилась безопасная область). Эта проблема не воспроизводится в iOS 18.
Я хочу, чтобы одинаковое поведение во всех версиях: когда открывается средство просмотра файлов, нижняя панель вкладок должна быть скрыта (или средство просмотра файлов всегда должно быть полноэкранным).
Что я делаю
Когда загрузка завершается, я вызываю openFile(url:mimeType:). В зависимости от типа файла я создаю новую вкладку (контроллер представления), затем переключаюсь на нее.

Код: Выделить всё

final class BaseTabViewController: UIViewController {

var containerView: UIView!
var tabIndex: Int { max(TabStore.shared.index(of: self), 0) }

func openFile(fileUrl: URL?, mimeType: String) {
guard let fileUrl else { return }
guard FileManager.default.fileExists(atPath: fileUrl.path) else { return }

DispatchQueue.main.async {
var animatedSwitch = true

// If this was a temporary “blank download tab”, close it first
if let webVC = self as? WebTabViewController,
webVC.lastFinishedURL == nil || webVC.lastFinishedURL == webVC.initialURL {
animatedSwitch = false
self.closeCurrentTabSoon()
}

if FileUtil.isOfficeFile(fileUrl, mimeType: mimeType) {
self.openOfficeFile(url: fileUrl, withAnimation: animatedSwitch)
} else {
self.openWebViewFile(url: fileUrl, mimeType: mimeType, withAnimation: animatedSwitch)
}
}
}

private func openOfficeFile(url: URL, withAnimation: Bool) {
guard let vc = TabStore.shared.insertNewTab(after: tabIndex, type: OfficeFileViewController.self) else { return }
vc.fileUrl = url
switchToTab(at: tabIndex + 1, animated: withAnimation)
}

private func openWebViewFile(url: URL, mimeType: String, withAnimation: Bool) {
guard let vc = TabStore.shared.insertNewTab(after: tabIndex, type: AttachmentViewController.self) else { return }
vc.fileUrl = url
vc.mimeType = mimeType
switchToTab(at: tabIndex + 1, animated: withAnimation)
}

private func switchToTab(at index: Int, animated: Bool) {
TabStore.shared.currentIndex = index
presentingViewController?.dismiss(animated: false, completion: nil)
}

private func closeCurrentTabSoon() {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
TabStore.shared.closeTab(at: TabStore.shared.index(of: self))
self.presentingViewController?.dismiss(animated: false, completion: nil)
}
}
}
Проблема
На iOS 26 нижняя панель вкладок видна, когда отображается OfficeFileViewController или AttachmentViewController.
Ожидается
Экран просмотра файлов должен быть полноэкранным, а панель вкладок скрыта, как в iOS 18.
/>Реально
В iOS 26 панель вкладок отображается при просмотре файла.
Вопрос
Как правильно заставить вкладку просмотра файлов скрывать панель вкладок/переключаться в полноэкранный режим в разных версиях iOS?
  • Должен ли я устанавливать определенный modalPresentationStyle где-нибудь?
  • Или правильное решение — скрыть панель вкладок в viewWillAppear контроллеров просмотра файлов?
  • Есть ли изменение поведения iOS 26, которое делает панели вкладок видимыми, если они не скрыты явно?


Подробнее здесь: https://stackoverflow.com/questions/798 ... t-on-ios-1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»