はじめに
iOS17.0でキーボードの上にボタンを表示しようとしても表示されないという問題があるようです。
過去にも同様のバグがあったようですが、iOS16で1度修正されて、iOS17.0で再発したっぽいです。
iOS17.2では直ってました。
再現方法を記録しておきます。
サンプルアプリ
iOS17.0 | iOS17.2 |
---|---|
実装
import SwiftUI
struct ContentView: View {
@State var isSheetPresented = false
var body: some View {
Button {
isSheetPresented = true
} label: {
Text("sheetを表示")
}
.sheet(isPresented: $isSheetPresented) {
SubView()
}
}
}
struct SubView: View {
@State var text = ""
@Environment(\.dismiss) private var dismiss
var body: some View {
NavigationView {
TextField("", text: $text)
.textFieldStyle(.roundedBorder)
.padding(20)
.toolbar {
ToolbarItemGroup(placement: .topBarTrailing) {
Button {
dismiss()
} label: {
Text("閉じる")
}
}
ToolbarItemGroup(placement: .keyboard) {
Spacer()
Button {
print("完了")
} label: {
Text("完了")
}
}
}
}
}
}
対策
現時点では不明
おわり
意外と致命的なバグな気がします。
対策を見つけ次第追加します。
UIKitを使えばなんとかなる可能性はありそうです。
Appleにフードバックを送って直してもらいましょう