如何解决手势优先SwiftUI
我试图在滚动视图中制作一个水平列表视图,并让我LongPress拾取一个元素并将其重新排列。我似乎无法在父视图中同时具有dragGesture和childView中的LongPress手势。我尝试过highPriorityGesture,它重写了childView的手势,没有它,滚动视图的拖动手势被覆盖。希望能有所帮助。
struct CustomHList<T:View>: View {
@Binding var items:[T]
@Binding var activeItem:Int
@Binding var editing:Bool
@State private var editingInd:Int? = nil
@State private var offset = CGSize.zero
@State private var isDragging = false
@GestureState private var isHolding = false
var body: some View {
return vstack{
ScrollView(.horizontal,showsIndicators: false) {
HStack{
ForEach(0..<items.count){ind in
items[ind]
.offset(editingInd != nil && editingInd == ind ? offset:CGSize.zero)
.gesture(LongPressGesture(minimumDuration: 1.5)
.updating($isHolding) {currentstate,gestureState,transaction in
gestureState = currentstate
}
.onEnded { value in
withAnimation {
isDragging = true
}
}
.sequenced(before: DragGesture()
.onChanged{value in self.offset = value.translation}
.onEnded { _ in
withAnimation {
offset = .zero
isDragging = false
}
editingInd = 100
}))
}
}
}.highPriorityGesture(DragGesture())
Text("\(editingInd ?? 100)")
Text(isHolding ? "Yes":"No")
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。