در iOS بازگشت با سوایپ از لبه، کشش لاستیکی هنگام رسیدن به انتها و اقدامهای VoiceOver بخشی از عادت کاربر است. TDS فیزیک را به همین حس نزدیک میکند ولی معنای API را عوض نمیکند.
همان API یکسان؛ فقط حس بصری نمونه به پلتفرم نزدیک شده است.
ردیف با گوشهٔ گرد تا پایان میلغزد.
| الگوی بومی | معادل TDS | وضعیت | نکته |
|---|---|---|---|
| بازگشت تعاملی با سوایپ از لبه (در RTL لبهٔ راست) | هیچ — ژست سیستم/مرورگر است | خارج از وب | Safari این ژست را برای تاریخچه نگه میدارد. سوایپ آیتمها باید داخل ناحیهٔ محتوا شروع شوند. |
| تغییر اندازهٔ برگه با توقفگاهها (detents) | DockSheet — بدون توقفگاه میانی | با تفاوت | TDS برگه را داک زنده میداند؛ توقفگاه میانی ندارد. تصمیم رهاکردن بر پایهٔ فاصله و سرعت است. |
| کشش لاستیکی هنگام گذر از مرز | `rubberBand()` و `usePullToRefresh` | هممعنا | ایستادن کشش با `pullMaxPx`؛ در کاهش حرکت جابهجایی مستقیم میماند و برگشت بدون انیمیشن است. |
| منوی زمینه با فشار طولانی | `useLongPress` | با تفاوت | منوی زمینهٔ سیستم و بزرگنمایی متن در Safari با `-webkit-touch-callout: none` مهار میشود؛ فقط پس از فعالشدن ژست. |
| سوایپ اقدام در سطر فهرست | `useSwipe` | هممعنا | کشیدن سریع با فاصلهٔ کمتر هم کافی است (آستانهٔ سرعت). |
| Pinch و چرخش تصویر | `usePinchRotate` | هممعنا | در Safari برای جلوگیری از بزرگنمایی صفحه، `touch-action: none` فقط روی خود سطح نمایش اعمال میشود. |
| بازخورد لمسی (Haptic) | ندارد | خارج از وب | API لرزش در Safari iOS پشتیبانی نمیشود؛ بازخورد باید بصری و (در صورت opt-in) صوتی باشد. |
| فناوری | عمل کاربر | پاسخ TDS |
|---|---|---|
| VoiceOver — فعالسازی | دوبار ضربه روی عنصر فوکوسشده | کنترل واقعی `<button>`؛ بدون کد ویژه. |
| VoiceOver — Actions (روتور) | انتخاب اقدام برای آیتم | دکمهٔ جایگزین با برچسب عمل؛ ژست پنهان از صفحهخوان است. |
| Switch Control / Full Keyboard Access | پیمایش و فعالسازی با کلید | همان معادلهای کیبورد قرارداد؛ ترتیب فوکوس DOM منطقی. |
| Reduce Motion | تنظیم سیستم | `prefers-reduced-motion` و `data-reduced-motion` همیشه بر تم مقدماند. |
pull-to-refresh و کشش سیستم صفحه در لبهٔ بالا فعال است. ظرف ژستدار را اسکرولشونده کنید و `overscroll-behavior: contain` بدهید تا تداخل نشود.
فشار طولانی روی متن انتخاب میسازد؛ روی سطح ژستدار `user-select: none` فقط همانجا اعمال میشود، نه کل صفحه.
/* فقط ظرف ژستدار؛ ژست سیستم (بازگشت از لبه) دستنخورده میماند */.gesture-list { overscroll-behavior: contain; }.gesture-list > li { touch-action: pan-y; padding-inline: var(--tds-space-4); }مقادیر دقیق ناحیهٔ ژست سیستم به نسخهٔ کپی کد و تنظیم کاربر بستگی دارد و در TDS هاردکد نمیشود.