我有一个应用程序,它有一个父视图(graphView,带有粗蓝色边框)和一个子视图(nodeView,绿色框)。每个都有自己的 SwiftUI DragGesture 处理程序。我希望能够用不同的手指移动绿色节点和蓝色边框图。
目标:当我主动拖动 \xe2\x80\x9c 蓝色边框图时,将 \xe2\x80\x9cgreen 节点 \xe2\x80\x9d 保持在我的手指下。\xe2\x80\x9d
\n问题:绿色节点 \xe2\x80\x9cghosts\xe2\x80\x9d,即似乎在位置周围反弹。
\n笔记:
\n.simultaneousGestureon nodeView 可以让我用一根手指在节点上同时拖动图形和节点。但我想用两个单独的手指拖动图形和节点:一个在节点上,另一个在图形上。.offset上的ZStack)被设置为模仿我的应用程序的实际设置。如果有更好的方法,我也愿意在 UIKit 中执行此操作。我怀疑目前的问题是来自图形与节点手势处理程序上的竞争“触发周期”。
\nstruct StackOverflowTestView: View {\n @State var graphOffset: CGFloat = .zero\n @State var graphPreviousOffset: CGFloat = .zero\n\n @State var nodePosition: CGFloat = 200.0\n @State var nodePreviousPosition: CGFloat = 200.0\n\n @State var nodeIsDragged = false\n\n @State var lastNodeTranslation: CGFloat = .zero\n\n var …Run Code Online (Sandbox Code Playgroud) 立即目标:在触控板单击 + 拖动手势期间,检测附加(无单击)触控板拖动/平移手势并做出反应。
\n问题:只要第一次触控板单击+拖动正在进行,UIKit 似乎就会忽略触控板上额外的、无单击的两指平移。
\n大图 UX:\xe2\x80\x9cclick + 拖动\xe2\x80\x9d 和 \xe2\x80\x9cclick + 拖动 + 另一个平移\xe2\x80\x9d 应该有不同的行为。
\n示例:所需的行为类似于 Figma:当抓取组件\xe2\x80\x99s 名称时,另外两个手指的平移手势将导致背景(而不是组件)四处移动。
\n现在:
\n我\xe2\x80\x99VE尝试过:
\nUIGestureRecognizerDelegate\xe2\x80\x99s 委托方法,例如gestureRecognizer(_:shouldReceive:)minTouches = 1在一个触控板上 UIKit 手势识别器(即单击+拖动)和maxTouches = 0另一个(即无单击拖动)代码:
\nimport SwiftUI\n\nstruct StackOverflowUIKitView: View {\n var nodeView: …Run Code Online (Sandbox Code Playgroud)