Skip to main content

mobile-gesture-handler

Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android.

来源信息

仓库
Fadil369/Solutions
最近来源活动
2026年4月9日 00:36
检测到的 SKILL.md 语言
英语
星标
1
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
Mobile Gesture Handler
version
1.0.0
description
Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android.
author
workspace
activated
false
# Mobile Gesture Handler Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android. ## Decision Framework ### When to Apply Use when: Touch interactions, swipe navigation, drag-and-drop on mobile, pinch-to-zoom, mobile-specific UX ### When NOT to Apply Don't use when: Desktop-only applications, simple tap interactions ## Anti-Patterns ### 1. Tiny Touch Targets ```css /* BAD: 20px target */ .icon-button { width: 20px; height: 20px; } /* GOOD: 44px minimum per Apple/Google guidelines */ .icon-button { width: 44px; height: 44px; min-width: 44px; min-height: 44px; } ``` ### 2. No Gesture Feedback Always provide visual feedback during gestures (swipe reveals, drag handles, etc.). ## Trigger Phrases - "Touch gestures" - "Swipe navigation" - "Pinch to zoom" - "Long press" - "Mobile interactions" ## Patterns ### Swipe Detector ```javascript function useSwipe(onSwipeLeft, onSwipeRight, threshold = 50) { const touchStart = useRef(null); const onTouchStart = (e) => { touchStart.current = e.touches[0].clientX; }; const onTouchEnd = (e) => { if (!touchStart.current) return; const diff = touchStart.current - e.changedTouches[0].clientX; if (Math.abs(diff) > threshold) { diff > 0 ? onSwipeLeft?.() : onSwipeRight?.(); } touchStart.current = null; }; return { onTouchStart, onTouchEnd }; } ``` ### Long Press ```javascript function useLongPress(callback, delay = 500) { const timerRef = useRef(null); const start = () => { timerRef.current = setTimeout(callback, delay); }; const cancel = () => clearTimeout(timerRef.current); return { onTouchStart: start, onTouchEnd: cancel, onTouchMove: cancel, onMouseDown: start, onMouseUp: cancel, onMouseLeave: cancel, }; } ``` ## Integration - Works with: accessibility-pattern-library, component-lifecycle-manager
在 GitHub 查看