簡體   English   中英

SwiftUI 側邊欄列表底部項目在單擊時沒有響應

[英]SwiftUI sidebar list bottom items not responding on click

在這里,我有側邊欄列表,其中包含來自我的模型視圖的項目列表。 當我點擊頂部的項目正在響應。 但是很少有底部項目(快速的單元格)在單擊時沒有響應,並且沒有響應的行因我正在檢查的設備而異。 假設我的列表中有 12 項,最多 7 行在 iPhone 8 中工作,而對於 iPhone 11 pro,最多 9 行在工作。

SideMenuListView.swift

這是在側邊欄上列出菜單的代碼。

 List {
       ForEach(self.viewModel.data,id: \.id) { item in
                ZStack(alignment:.leading) {
                        SideMenuCell(image: Image(item.imageName), title: item.name)
                            .frame(height: 42)

                        NavigationLink.init(destination: item.view) {
                            EmptyView()
                        }
                }
                .buttonStyle(PlainButtonStyle())
        }
}

創建側邊菜單的代碼:

SideMenuContentView.swift

          GeometryReader { _ in
              EmptyView()
          }
          .background(Color.gray.opacity(0.3))
          .opacity(self.isOpen ? 1.0 : 0.0)
          .animation(Animation.easeIn.delay(0.25))
          .onTapGesture {
              // Close Menu on click outside menu.
              self.menuClose()
          }
          VStack(alignment: .leading, spacing: 0){
              /// Set Profile View on top.
              SideMenuHeader().fixedSize()
                  .frame(width: self.width,height: 150)
                  .offset(x: self.isOpen ? 0 : -self.width)
                  .animation(.default)

              /// Set Sidemenu View.
              HStack {
                  SideMenuListView(viewModel: SideMenuListViewModel())
                      .frame(width: self.width)
                      .background(Color.white)
                      .offset(x: self.isOpen ? 0 : -self.width)
                      .animation(.default)
                      .onDisappear {
                          // close side menu
                          self.isOpen = false
                      }
                  Spacer()
              }
          }
      } 

有什么東西覆蓋在我的手機上嗎? 我如何調試我的內容是否有任何覆蓋。

無法測試提供的代碼,因此僅通過代碼閱讀,我認為問題是由於 .offset

  SideMenuHeader().fixedSize()
      .frame(width: self.width,height: 150)
      .offset(x: self.isOpen ? 0 : -self.width)  // << here !!
      .animation(.default)

  /// Set Sidemenu View.
  HStack {
      SideMenuListView(viewModel: SideMenuListViewModel())
          .frame(width: self.width)
          .background(Color.white)
          .offset(x: self.isOpen ? 0 : -self.width) // << here !!

那是因為.offset不會改變視圖的布局/框架/內容區域,它只會移動屏幕上呈現的視覺表示,因此真實視圖不在用戶看到它並嘗試交互的地方。

因此解決方案是刪除這些偏移並重新考慮布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM