【问题标题】:SwiftUI sidebar list bottom items not responding on clickSwiftUI 侧边栏列表底部项目在单击时没有响应
【发布时间】:2020-05-13 18:08:41
【问题描述】:

这里我有侧边栏列表,其中包含来自我的模型视图的项目列表。 当我点击顶部项目正在响应。但是很少有底部项目(快速的单元格)在单击时没有响应,并且没有响应的行因我正在检查的设备而异。 假设我的列表中有 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()
              }
          }
      } 

有什么东西覆盖在我的手机上吗?如何调试我的内容是否有任何覆盖。

【问题讨论】:

    标签: ios swift xcode swiftui


    【解决方案1】:

    无法测试提供的代码,因此仅通过阅读代码,我认为问题是由于 .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 不会改变视图的布局/框架/内容区域,它只会移动屏幕上呈现的视觉表示,因此真实视图不在用户看到并尝试交互的地方。

    因此,解决方案是移除这些偏移并重新考虑布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多