[SwiftUI]TextEditorにフォーカスを合わせるには?

SwiftUI

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

コードでTextEditorにフォーカスを合わせる方法を紹介します。

スポンサーリンク

方法

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

TextEditorにフォーカスを合わせるには、@FocusStateとfocused修飾子を使います。

まず、Bool型の@FocusStaeを用意します。

@FocusState private var focusedField: Bool

次に、TextEditorにfocused修飾子を付与し、引数に用意した変数の参照を指定します。

TextEditor(text: $text)
    .focused($focusedField)

後は、フォーカスを合わせたい時に変数の値を「true」にします。

self.focusedField = true
スポンサーリンク

使用例

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(focusedField ? "UnFocus" : "Focus") {
                self.focusedField.toggle()
            }
        }
    }
}

コメント

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