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
我想检测音量按钮是否按下,而不仅仅是音量变化时。
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