Does anyone know if there is a way to disable background taps while a Menu is active? Currently the only way to dismiss a Menu is to tap away but if one taps something tappable, like a button or nav link the Menu is dismissed and the tap is registered.
This is isn't the biggest deal in the world, however I have noticed an issue when the button tap opens a sheet. If the sheet opening tap is pressed while the menu is open, the sheet will not open and the following error is printed in the console.
Attempt to present <TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView: 0x7ff2ff22e000> on <TtGC7SwiftUI19UIHostingControllerV7Topline13MenuSheetTest: 0x7ff2fdf23b90> (from <TtGC7SwiftUI19UIHostingControllerV7Topline13MenuSheetTest: 0x7ff2fdf23b90>) which is already presenting <_UIContextMenuActionsOnlyViewController: 0x7ff2ff22d690>.
I have the following sample snippet that will demonstrate this behavior:
@State var sheetOpen = false
var body: some View {
HStack {
Button {
sheetOpen.toggle()
} label: {
Text("Open Sheet")
}
Spacer()
Menu("Open menu") {
Button {
print("Option 1 pressed")
} label: {
Text("Option 1")
}
Button {
print("Option 2 pressed")
} label: {
Text("Option 2")
}
}
}
.padding()
.sheet(isPresented: $sheetOpen) {
Text("Sheet is open")
}
}
Has anyone else encountered this behavior before? If I could disable taps while the Menu is open I could avoid this "already presenting" error entirely. I have also looked at setting up a proxy variable for when the Menu is open or not but there doesn't seem like a universal solution that would work in all cases.
Any help would be appreciated, thanks!