Панель инструментов клавиатуры нарушает нижнюю безопасную область после фона на 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
Ответить

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

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

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

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

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