✍️

watchOSアプリでテキスト入力インタフェースを呼び出す

に公開

リマインダーアプリの「追加」ボタンをタップすると、テキスト入力状態になり、音声やキーボードなどでテキストを入力できます。

SwiftUIでこれを実現するには、TextFieldLink を使用します。

https://developer.apple.com/documentation/swiftui/textfieldlink

TextFieldLink はwatchOS専用で、バージョン9.0から使用できます。

以下は実装例です。

struct ContentView: View {
  @State
  private var texts: [String] = []

  var body: some View {
    List(texts, id: \.self) { text in
      Text(text)
    }
    .toolbar {
      ToolbarItem(placement: .bottomBar) {
        TextFieldLink(prompt: Text("テキストを入力")) {
          Label("テキストを追加", systemImage: "pencil")
            .foregroundColor(.blue)
        } onSubmit: { newText in
          texts.append(newText)
        }
      }
    }
    .padding()
  }
}

実行すると、以下のようになります。(スクショはシミュレータのものですが、実機でも動作を確認しています)

実行結果

細かい内容を後にして、テキストを入力して登録したい、というユースケースで使えそうです。

Discussion