返回 Skill 列表
extension
分类: 开发与工程无需 API Key

"spatial-gestures"

visionOS空间手势模式:眼球追踪、捏合、拖动、旋转、放大手势。在实现visionOS输入处理或空间交互时使用。触发器:手势、轻点、拖动、捏合、旋转、放大、空间。

person作者: jakexiaohubgithub

Spatial Gestures (visionOS)

visionOS uses eye tracking + hand gestures instead of touch.

Tap Gesture (look + pinch)

Model3D(named: "Globe")
    .gesture(TapGesture().targetedToAnyEntity().onEnded { value in
        handleTap(value.entity)
    })

Drag Gesture (pinch + move)

RealityView { content in
    // entity setup
}
.gesture(DragGesture().targetedToAnyEntity().onChanged { value in
    value.entity.position = value.convert(value.location3D, from: .local, to: .scene)
})

Long Press

SpatialTapGesture()
    .onEnded { value in
        handleSpatialTap(at: value.location)
    }

Indirect Gestures (SwiftUI views)

Standard SwiftUI gestures work on 2D windows via eye tracking:

Button("Action") { doSomething() }
    .hoverEffect()  // REQUIRED — visual feedback for eye tracking

Toggle("Setting", isOn: $setting)
    .hoverEffect()

Rules

  1. ALL interactive SwiftUI elements MUST have .hoverEffect() for eye tracking feedback
  2. Use TapGesture().targetedToAnyEntity() for 3D entity interaction
  3. Use DragGesture().targetedToAnyEntity() for spatial dragging
  4. Standard SwiftUI gestures work on 2D window content via eye tracking
  5. No haptic feedback available — use visual and audio feedback instead
  6. Minimum interactive target size: 60x60 points