どうも、ちょげ(@chogetarou)です。
TextEditorのキーボードを閉じる方法を紹介します。
方法

TextEditorのキーボードを閉じる方法は、2つあります。
@FocusState + focused修飾子
TextEditorにフォーカスを合わせるには、@FocusStateとfocused修飾子を使います。
まず、Bool型の@FocusStaeを用意します。
@FocusState private var focusedField: Bool
次に、TextEditorにfocused修飾子を付与し、引数に用意した変数の参照を指定します。
TextEditor(text: $text)
.focused($focusedField)
後は、キーボードを閉じたい時に、変数の値を「false」にします。
self.focusedField = false
使用例
struct ContentView: View {
@State var text = ""
@FocusState private var focusedField: Bool
var body: some View {
VStack {
TextEditor(text: $text)
.frame(width: 300, height: 200)
.border(Color.blue)
.focused($focusedField)
Button("Close Keyboard") {
self.focusedField = false
}
}
}
UIApplication.shared.sendAction()
もう1つは、UIApplication.shared.sendAction()を使う方法です。
具体的には、キーボードを閉じたいタイミングで、「UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)」を呼び出します。
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
使用例
struct ContentView: View {
@State var text = ""
@FocusState private var focusedField: Bool
var body: some View {
VStack {
TextEditor(text: $text)
.frame(width: 300, height: 200)
.border(Color.blue)
.focused($focusedField)
Button("Close Keyboard") {
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
}
}
まとめ
TextEditorのキーボードを閉じる方法は、2つあります。
- @FocusStateとfocused修飾子を使う方法
- UIApplication.shared.sendAction()を使う方法
コメント