Прокладка в iOS 26 не работает на панели инструментов клавиатуры (но работает в iOS 18)IOS

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

Сообщение Anonymous »

Мне нужно разместить несколько кнопок с текстом и изображением на панели инструментов клавиатуры, и я хочу вставить разделители, чтобы они располагались равномерно. Это работало на iOS 18. Однако на iOS 26 все загромождено. См. картинку:
Изображение

Вот минимальный репродукция, с которой вы можете поиграть:

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

import SwiftUI

struct ContentView: View {
@State var text: String = ""
var body: some View {
NavigationStack {
List {
TextField("Click Me", text: $text)

Text("Hello, world!").font(Font.system(size: 32))
Text("Hello, world!").font(Font.system(size: 32))
Text("Hello, world!").font(Font.system(size: 32))
Text("Hello, world!").font(Font.system(size: 32))
Text("Hello, world!").font(Font.system(size: 32))
}
.toolbar {
ToolbarItemGroup(placement: .topBarLeading) {
Button {

} label: {
Text("Toggle")
}
}
}
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
keyboardButtons
}
}
}
.navigationTitle("Hello")
}

@ViewBuilder
private var keyboardButtons: some View {

HStack {
SUITextButton("Button") {}
Spacer()

SUIImageButton(
image: UIImage(
systemName: "chevron.left",
withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .regular, scale: .small)
)!,
enabled: true
) {}

Spacer()

SUIImageButton(
image: UIImage(
systemName: "chevron.right",
withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .regular, scale: .small)
)!,
enabled: true
) {}

Spacer()
SUITextButton("Button") {}
}
}
}

#Preview {
ContentView()
}

public struct SUITextButton: View {

private let title: String
private let action: () -> Void
private let enabled: Bool

public init(_ title: String, enabled: Bool = true, action: @escaping () -> Void) {
self.title = title
self.enabled = enabled
self.action = action
}

public var body: some View {
Button(title, action: action)
}
}

public struct SUIImageButton: View {

public init(image: UIImage, enabled: Bool, action: @escaping () -> Void) {
self.image = image
self.enabled = enabled
self.action = action
}

private let image: UIImage
private let enabled: Bool
private let action: () -> Void

public var body: some View {
Button(action: action) {
SUIImage(
uiImage: image,
// Since it's inside of a button, it will be blue when enabled, and gray when disabled.
rendering: .systemTint)
}
}

}

public struct SUIImage: View {

public enum Rendering {
case systemTint
case customColor(color: UIColor)
case original
}

private let uiImage: UIImage
private let rendering: Rendering

public init(uiImage: UIImage, rendering: Rendering) {
self.uiImage = uiImage
self.rendering = rendering
}

public var body: some View {

let width: CGFloat = 18.0 + (2.0 / 3.0)
let height: CGFloat = 26.0 + (2.0 / 3.0)

Image(uiImage: uiImage)
.renderingMode(.template)
}
}

Установка флага UIDesignRequriesCompatibility сработала, но мне нужен эффект стекла для других частей моего приложения (и я думаю, что эффект стекла над клавиатурой выглядит лучше). Так что это не вариант.

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

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

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

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

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

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