web-dev-qa-db-ja.com

SwiftUIのキープレスイベントに応答する

MacOS/OSXのescキーなどのキープレスや、iPadで外部キーボードを使用する場合に応答したい。これどうやってするの?

SwiftUIの onExitCommand@available/#availableを使用することを考えました。 macOS/OSXだけでなく、SwiftUIでのキー入力にどのように応答できますか?

2
George_E

MacOSとtvOSでは、ビューにonExitCommand(perform:)修飾子があります。 Appleの ドキュメント から:

ビューにフォーカスがある間、終了コマンドの受信に応答してトリガーされるアクションを設定します

ユーザーは、tvOSのメニューボタンまたはmacOSのエスケープキーを押して、終了コマンドを生成します。

例えば:

struct ContentView: View {
    
    var body: some View {
        VStack {
            
            TextField("Top", text: .constant(""))
                .onExitCommand(perform: {
                    print("Exit from top text field")
                })
            
            TextField("Bottom", text: .constant(""))
                .onExitCommand(perform: {
                    print("Exit from bottom text field")
                })
        }
        .padding()
    }
    
}
0
Peter Schorn