[英]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.