【发布时间】:2021-03-26 09:54:01
【问题描述】:
有没有办法自定义 .onDrag() 在 SwiftUI 视图中使用的手势识别器?开发人员文档声明“应用 onDrag(_:) 修饰符会为该视图添加适当的拖放手势”,但据我所知,关于如何更改这些手势的行为是沉默的。这些手势在开始拖动之前等待长按。我想将延迟减少到零。
为什么需要
应用程序当前使用自定义 DragGesture 和 .offset(value) 来实现拖动。此策略要求启动拖动的视图具有比任何可能拖动项目的视图更大的 .zIndex。由于可以在不同的视图中开始拖动,因此每个视图的 .zIndex 都通过三元运算符以编程方式进行管理。
.onDrag() 功能将拖动的项目置于所有视图的顶部,而不考虑 .zIndex。由于实现了放大手势,现在需要此行为,这要求放大视图的 .zIndex 低于其他视图的 .zIndex,否则它将在扩展时覆盖它们。如果放大视图是拖动源,则所需的 .zIndex 行为(高用于拖动,低用于放大)是不兼容的。
我尝试在放大视图上使用 .clipped(),但这会阻止拖动的项目出现在该视图之外。
【问题讨论】:
标签: swiftui drag-and-drop gesture-recognition