SwiftUI:如何检测按下的音量按钮(硬件)?

SwiftUI: how to detect volume button pressed (hardware)?

我想检测音量按钮是否按下,而不仅仅是音量变化时。

SwiftUI你会怎么做?

关于堆栈溢出的所有答案都是针对 Swift 或 Objective-C。

编辑:

谢谢@Michael C 的回答。

我想在 SwiftUI 中没有简单的方法可以做到这一点。我想我必须做一个 objective-c 包装器。

我也遇到过这个问题。我遇到了这个项目 https://github.com/jpsim/JPSVolumeButtonHandler,它完成了大部分工作,甚至在按下音量按钮时隐藏了音量指示器。

这就是我为让它工作所做的。希望对你有帮助。

import SwiftUI
import JPSVolumeButtonHandler

struct MyView: View {

    @State private var volumeHandler: JPSVolumeButtonHandler?

    var body: some View {
        ZStack {
            Text("Hello World")
        }
        .onAppear {
            // Setup capture of volume buttons
            volumeHandler = JPSVolumeButtonHandler(up: {
                // Code to run when volume button released
            }, downBlock: {
                // Code to run when volume button pressed
            })

            // Start capture of volume buttons 
            volumeHandler?.start(true)
        }
        .onDisappear {
            // Stop capture of volume buttons when leaving view
            volumeHandler?.start(false)
        }
    }

}

这是我原来想出来的post:iOS. Capturing photos with volume buttons