问题标签 [draggesture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
201 浏览

swiftui - 如何在 SwiftUI 视图的属性中定义拖动手势

我无法从如下计算属性返回 DragGesture

0 投票
1 回答
1169 浏览

ios - 在触发不同的 DragGesture 之前,SwiftUI DragGestures 不会更新

这个 gif 应该很清楚地显示我的问题。

在此处输入图像描述

换句话说,我有一个背景颜色的 DragGesture 和 TapGesture 来添加 Text() 视图。每个文本视图上都有一个 DragGesture 以在拖动时更新其位置。这可行,但在我激活背景颜色 DragGesture 之前,文本视图位置的视觉效果不会更新。我已经确认文本视图位置值会更新,它们只是不会在视觉上更新。

另外,我有一个长按手势,通过阻止调用 moodColor() 来“锁定”背景颜色。当它被锁定时,文本视图不会移动,直到我再次长按解锁它,然后拖动背景颜色。

我有一种误用 DragGestures 的感觉,但似乎每个视图都应该有自己的手势。

这是代码。

0 投票
1 回答
4813 浏览

swiftui - SwiftUI 中 DragGesture 和 ScrollView 的交互

在我正在开发的应用程序中,有一部分主要是“前进”导航——点击按钮将显示下一张幻灯片。然而,辅助“向后”导航也是必要的。这是我使用的方法:

有一个小指标(左箭头),最初是隐藏的(dragOffset = -100)。当拖动手势开始时,偏移量被输入到dragOffset状态变量中,并且有效地显示箭头。当拖动手势结束时,箭头再次隐藏,如果达到某个偏移量,则显示上一张幻灯片。

工作得很好,除了当用户滚动 ScrollView 中的内容时,这个手势也被触发并更新了一段时间,但我认为,它被 ScrollView 取消并且不调用“onEnded”。结果,箭头指示符停留在屏幕上。

因此,问题是:做这样的手势的正确方法是什么,可以与 ScrollView 一起使用?SwiftUI 的当前状态是否有可能?

0 投票
2 回答
272 浏览

ios - 如何限制 2 个 CGPoints 之间视图的拖动/平移(如滑块)

我有 2 组独立的数据,一个用于绘制一条线(a Path),另一个用于在线某处放置一个小视图(Circle)

你可以想象它就像一个 Slider(实际上 UX 应该是这样的)

在此处输入图像描述

我想在 Red Circle View 上添加一个拖动手势,以便用户可以在线条端点之间的任何位置滑动它。但是我实施或认为的方式根本不起作用或非常糟糕。

已知的数据集是:

  • StartLine- CGPoint

  • EndLine- CGPoint

  • PositionCircle View- CGPoint

为简单起见,我添加了一些简单的点,即Top& Bottom,但实际上,我想要实现的是,通过获取纬度/经度坐标,在地图层上建立周长,将其转换为屏幕坐标空间并为这两个点绘制一条Path(线),然后让用户能够标记周长,并根据用户的需要自由地沿着周长线拖动它。(每行一个标签,没有并发症)。

话虽如此,Slider 不是一个选择。

看起来像:
在此处输入图像描述

示例代码:

检查点是否在线的辅助方法:

任何帮助表示赞赏。提前致谢。

0 投票
2 回答
902 浏览

ios - 在 SwiftUI 中的 ForEach 内将拖动手势添加到图像

我目前正在开发一个应用程序,向用户展示他的植物箱和一些测量值(如地面湿度、温度等)每个植物箱里面都有一些植物,这些植物正在详细视图中显示。我希望用户能够将其中一种植物拖到角落以将其移除。目前我有这个实现:

如下所示: 代码片段的屏幕截图

但是,当我开始拖动时,两个图像都会移动。我认为这是因为两个图像的偏移量都绑定到同一个变量(DragOffset)。我怎样才能做到只有一张图像在移动?

我考虑过实现某种数组,将植物的索引映射到特定的偏移量,但我不知道如何将它实现到手势中。谢谢你的帮助!

0 投票
1 回答
80 浏览

swiftui - 在 DragGesture onChanged 后重新初始化视图

以下代码显示了一个橙色屏幕,右下角有一个绿色圆圈。可以拖动圆圈。

如果您运行并点击绿色圆圈(开始拖动手势),控制台中将显示以下内容:

我期望发生的是,当你拖动圆圈时,它可以平滑地拖动到屏幕上的其他地方。

实际发生的情况是,当拖动开始时,DraggableCircle.init再次调用它会重置偏移量并将圆圈放在中间。为什么是这样?

注意:当您将@State previousOffset移入时ContentView,问题就会消失。但我不明白为什么。

0 投票
1 回答
1354 浏览

ios - 如何仅在swiftUI中将拖动手势限制到特定帧

我只想在水平框架内拖动圆形。我尝试下面的代码,您可以看到形状完美地水平工作并且左侧也可以,但是当将右侧形状拖动到设备框架之外时。我检查了很多答案,但没有任何工作。也尝试添加.onEnded但不工作。请帮助我提前谢谢这是我尝试过的代码

这是左右拖动的圆形屏幕截图 在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
306 浏览

swiftui - 获得阻力速度的最佳方法是什么?

我想知道如何获得DragGesture速度?

我了解该公式的工作原理以及如何手动获取它,但是当我这样做时,它不是 Apple 返回的地方(至少有时它非常不同)。

我有以下代码片段

从上面:

A将输出类似Value(time: 2001-01-02 16:37:14 +0000, location: (250.0, -111.0), startLocation: (249.66665649414062, 71.0), velocity: SwiftUI._Velocity<__C.CGSize>(valuePerSecond: (163.23212105439427, 71.91841849340494)))

B将输出类似Calculated: 287.6736739736197

请注意,A我正在查看第二个值,valuePerSecond其中y velocity.

根据您拖动的方式,结果将不同或相同。Apple 提供了速度作为属性.startLocation.endLocation但不幸的是我无法访问它(至少我不知道)所以我必须自己计算它,理论上我的计算是正确的,但它们与 Apple 有很大不同。那么这里的问题是什么?

0 投票
2 回答
752 浏览

ios - SwiftUI 拖动手势冻结多点触控

我正在尝试在 SwiftUI 中拖动视图。

拖动效果很好,直到我将第二根手指放在屏幕上,之后拖动停止并且代码块 ( onChanged, onEnded) 都不会被调用。

但是,当我再次开始用单指拖动时,它又开始工作了。

有什么办法可以解决这个问题还是我遗漏了什么?

0 投票
1 回答
693 浏览

swift - 拖动手势时将矩形限制为屏幕边缘

我刚刚开始使用 SwiftUI,我希望找到最好的方法来解决在拖动手势期间将此矩形保持在屏幕边界内的问题。现在它离开边缘直到它到达正方形的中间(我想是因为我正在使用 CGPoint)。

我试着做一些数学来限制矩形,它只在左侧成功,但这似乎是一种糟糕的方法,并且不考虑不同的屏幕尺寸。任何人都可以帮忙吗?

在此处输入图像描述