Post

Replies

Boosts

Views

Activity

SwiftUI: Menu not responding after Sheet is closed
Problem When dismissing a Sheet any Menu buttons become unresponsive. Detailed Description I have a Menu in the toolbar, which becomes unresponsive right after the Sheet is dismissed. The action on the button is highlighted, so it recognizes the tap, but it doesn't do anything. When I tap on it a second time the Menu is working fine again. The problem doesn't occur when the sheet is dismissed by swiping down. The behavior is the same in the simulator and on device. Whenever I click on the Menu I get the following output in the debug area: 2021-10-14 19:30:08.656272+0200 MenuTest[71454:12250609] [UICollectionViewRecursion] cv == 0x12f813000 Disabling recursion trigger logging However when the button is not responding i get the following output: 2021-10-14 19:32:55.102149+0200 MenuTest[71454:12250609] [UILog] Called -[UIContextMenuInteraction updateVisibleMenuWithBlock:] while no context menu is visible. This won't do anything. I reduced everything else from my code to narrow down the problem, but I ended up with pretty much the basics now and still have the problem. Here is the code for the ContentView : struct ContentView: View {     @State private var showingSheet = false          var body: some View {         NavigationView {             Button(action: {showingSheet = true}) {                 Text("Open Sheet")             }             .navigationTitle("MenuBugTest")             .toolbar {                 ToolbarItem(placement: .primaryAction) {                     Menu {                         Button(action: {}) {                             Label("MenuButton", systemImage: "rectangle.stack.badge.plus")                         }                     }                 label: {                     Text("Open Menu")                 }                 }             }         }         .sheet(isPresented: $showingSheet, content: {             SheetView()         })     } } Here the code for the presented sheet: struct SheetView: View {     @Environment(\.presentationMode) var presentationMode     var body: some View {         NavigationView {             Text("Sheet")                 .toolbar {                     ToolbarItem(placement: .primaryAction) {                         Button(action: {self.presentationMode.wrappedValue.dismiss()}) {                             Text("Done")                         }                     }                 }         }     } } I also provided a small project in this repository  Things I tried to solve the problem: putting the @Environment(.presentationMode) variable additionally in ContentView using the new dismiss action available in iOS15 using the method of setting the original „showingSheet“ Bool with a Binding to dismiss the sheet putting the menu in various places putting a ternary operator into the menu checking the „showingSheet“  Bool, to force an update switching to a fullScreenCover instead various other things that didn’t help What am I missing here? Is this a bug? Any workarounds? I am grateful for any help. Thank you!
9
2
5.7k
Oct ’21