はじめに
iOS16からscrollDismissesKeyboard
という機能が使用できます。
これを使用するとスクロールでキーボードを閉じるかどうかを指定することができます。
実装
immediately
スクロールが始まったらすぐにキーボードが下がる。
import SwiftUI
struct ContentView: View {
@State var text = ""
var body: some View {
ScrollView {
VStack {
TextField("", text: $text)
.textFieldStyle(.roundedBorder)
}
.padding(20)
}
.scrollDismissesKeyboard(.immediately)
}
}
interactively
スクロールと連動してキーボードが下がる。
import SwiftUI
struct ContentView: View {
@State var text = ""
var body: some View {
ScrollView {
VStack {
TextField("", text: $text)
.textFieldStyle(.roundedBorder)
}
.padding(20)
}
.scrollDismissesKeyboard(.interactively)
}
}
never
スクロールによってキーボードが下がることはない
import SwiftUI
struct ContentView: View {
@State var text = ""
var body: some View {
ScrollView {
VStack {
TextField("", text: $text)
.textFieldStyle(.roundedBorder)
}
.padding(20)
}
.scrollDismissesKeyboard(.never)
}
}
動作動画
immediately | interactively | never |
---|---|---|
![]() |
![]() |
![]() |
おわり
ScrollDismissesKeyboardMode
にはautomatic
も存在します。
しかし、automatic
を指定して使うことはないと思うので、今回の記事には記載していません。
公式ドキュメント