我的第一个视图中有一个加号按钮。看起来像一个 FAB 按钮。我想在点击 NavigationLink 中包含的某个步骤后隐藏它。到目前为止我有这样的事情:
ForEach(0 ..< 12) {item in
NavigationLink(destination: TransactionsDetailsView()) {
VStack {
HStack(alignment: .top) {
Text("List item")
}
.padding(EdgeInsets(top: 5, leading: 10, bottom: 5, trailing: 10))
.foregroundColor(.black)
Divider()
}
}
.simultaneousGesture(TapGesture().onEnded{
self.showPlusButton = false
})
.onAppear(){
self.showPlusButton = true
}
}
单击一下即可正常工作。但当我长按 NavigationLink 时,它不起作用。我应该如何重写我的代码以包括长按?或者也许我应该让它的工作方式与使用simultaneousGesture不同?
Yes, NavigationLink
不允许这样的同时手势(可能是设计的,可能是由于问题,等等)。
您期望的行为可能会实现如下(当然,如果您在列表项中需要一些 V 形符号,则需要手动添加它)
struct TestSimultaneousGesture: View {
@State var showPlusButton = false
@State var currentTag: Int?
var body: some View {
NavigationView {
List {
ForEach(0 ..< 12) { item in
VStack {
HStack(alignment: .top) {
Text("List item")
NavigationLink(destination: Text("Details"), tag: item, selection: self.$currentTag) {
EmptyView()
}
}
.padding(EdgeInsets(top: 5, leading: 10, bottom: 5, trailing: 10))
.foregroundColor(.black)
Divider()
}
.simultaneousGesture(TapGesture().onEnded{
print("Got Tap")
self.currentTag = item
self.showPlusButton = false
})
.simultaneousGesture(LongPressGesture().onEnded{_ in
print("Got Long Press")
self.currentTag = item
self.showPlusButton = false
})
.onAppear(){
self.showPlusButton = true
}
}
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)