Панель инструментов клавиатуры нарушает нижнюю безопасную область после фона на iOS 26IOS

Программируем под IOS
Anonymous
Панель инструментов клавиатуры нарушает нижнюю безопасную область после фона на iOS 26

Сообщение Anonymous »

Вот шаги, чтобы воспроизвести проблему:
  • Требуется iOS 26+
  • создайте любой ввод, который вызывает открытие клавиатуры
  • добавьте панель инструментов на клавиатуру (с любыми кнопками)
  • откройте клавиатуру (например, сфокусировав ввод)
  • закрыть клавиатуру
  • фоновое приложение (на этом этапе печатаются предупреждения)
  • вернуться на передний план
  • увидеть, что нижняя безопасная область нарушена (вы можете добавить любое представление, привязанное к безопасной области)
Кстати, удаление панели инструментов решает проблему.
Изображение

Выводятся следующие предупреждения:

-[RTIInputSystemClient RemoteTextInputSessionWithID:performInputOperation:]  для выполнения операции ввода требуется действительный идентификатор сеанса. inputModality = Keyboard, inputOperation = ignoreAutoFillPanel, customInfoType = UIUserInteractionRemoteInputOperations
-[RTIInputSystemClient RemoteTextInputSessionWithID:performInputOperation:]  для выполнения операции ввода требуется действительный идентификатор сеанса. inputModality = Keyboard, inputOperation = ignoreAutoFillPanel, customInfoType = UIUserInteractionRemoteInputOperations
Для создания моментального снимка представления (0x15b0a4800, UIKeyboardImpl), которого нет в видимом окне, требуется afterScreenUpdates:YES.

Вот тестовый проект для демонстрация проблемы:
import SwiftUI

struct ContentView: View {
@State var selection: Int = 0
@State var presentingModal = false

var body: some View {
NavigationStack {
VStack(spacing: 0) {
TabView(selection: $selection) {
Group {
Button("Present") { self.presentingModal = true }
.tag(0)
Text("Second").tag(1)
}
.toolbar(.hidden, for: .tabBar)
}

HStack(spacing: 0) {
ForEach(0...1, id: \.self) { tab in
Image(systemName: "cloud.heavyrain.fill")
.padding(.vertical, 16)
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture {
selection = tab
}
}
}
.padding(.horizontal, 16)
.background(Color.secondary)
}
.ignoresSafeArea(.keyboard)
.navigationTitle("Title")
.navigationBarTitleDisplayMode(.inline)
}
.sheet(isPresented: $presentingModal) {
PresentedView()
}
}
}

struct PresentedView: View {
@State var text = ""
@FocusState var isInputActive: Bool

var body: some View {
NavigationStack {
VStack {
TextField("", text: $text)
.focused($isInputActive)
.padding()
.background(.secondary)

Spacer()
}
.padding(.top, 40)
.padding(.horizontal, 20)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Button("Close") {
isInputActive = false
}
}
}
}
}
}

#Preview {
ContentView()
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... -on-ios-26

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