[SwiftUI]TextEditorのキーボードを閉じるには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

TextEditorのキーボードを閉じる方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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()を使う方法

コメント

タイトルとURLをコピーしました