首页 > 解决方案 > 如何自定义 SwiftUI .onDrag 自动添加的手势识别器?

问题描述

有什么方法可以自定义 .onDrag() 在 SwiftUI 视图中使用的手势识别器?开发人员文档指出“应用 onDrag(_:) 修饰符会为该视图添加适当的拖放手势”,但据我所知,关于如何更改这些手势的行为是沉默的。这些手势在开始拖动之前等待长按。我想将延迟减少到零。

为什么需要

该应用程序当前使用自定义 DragGesture 和 .offset(value) 来实现拖动。此策略要求启动拖动的视图具有比任何可能拖动项目的视图更大的 .zIndex。由于拖动可以在不同的视图中开始,每个视图的 .zIndex 通过三元运算符以编程方式进行管理。

.onDrag() 功能将拖动的项目置于所有视图的顶部,而与 .zIndex 无关。由于实现了放大手势,现在需要此行为,这要求放大视图的 .zIndex 低于其他视图的 .zIndex ,否则它将在扩展时覆盖它们。如果放大视图是拖动源,则所需的 .zIndex 行为(高用于拖动,低用于放大)是不兼容的。

我尝试在放大视图上使用 .clipped() ,但这会阻止拖动的项目出现在该视图之外。

标签: swiftuidrag-and-dropgesture-recognition

解决方案


苹果开发者支持回应说没有办法自定义 SwiftUI 自动添加到 .onDrag() 的手势识别器


推荐阅读