سوایپ ژستی است که انگشت روی صفحه میکشد و به یکی از اصلیترین روشهای تعامل در رابطهای موبایل تبدیل شده است. از ورق زدن ساده عکسها تا حذف ایمیلها، سوایپ جای بسیاری از دکمهها را گرفته و کنترل را طبیعیتر کرده است. به گزارش Apple Human Interface Guidelines (2024)، ژست کشیدن دومین ژست پرمصرف بعد از ضربه زدن است و ۲۲٪ از تمام تعاملات در اپلیکیشنهای موبایل را تشکیل میدهد.
نکات اصلی
سوایپ (swipe) ژستی است که کاربر انگشت خود را روی صفحه در جهتی مشخص میکشد و عملی را آغاز میکند. بر خلاف ضربه زدن (لمس کوتاه)، سوایپ شامل حرکت و تماس با صفحه در طول ژست است.
تاریخچه سوایپ با اولین iPhone در سال ۲۰۰۷ آغاز شد — ژست باز کردن قفل «slide to unlock» به نشانه رابطهای موبایل تبدیل شد. امروزه سوایپ در هزاران اپلیکیشن برای ناوبری، مدیریت محتوا و سازماندهی اطلاعات استفاده میشود.
به گزارش UX Planet (2025)، اپلیکیشنهای دارای کنترل ژستی (از جمله سوایپ) ۱۸٪ تعامل کاربر بیشتری نشان میدهند. سوایپ در مقایسه با فشار دادن دکمه به عنوان عملی طبیعیتر درک میشود، زیرا حرکت فیزیکی اشیاء را شبیهسازی میکند.
پارامترهای اصلی که مشخص میکنند آیا ژست سوایپ است: حداقل فاصله (معمولاً ۳۰–۵۰ پیکسل)، حداکثر انحراف از خط مستقیم (بیش از ۱۵–۲۰ درجه نباشد) و حداکثر مدت تماس (تا ۵۰۰ میلیثانیه). اگر انگشت بیشتر روی صفحه بماند، ژست به عنوان کشیدن (drag) یا فشار طولانی (long press) طبقهبندی میشود.
بر اساس جهت حرکت سوایپها به چهار نوع اصلی تقسیم میشوند: چپ، راست، بالا و پایین. هر نوع کاربرد و زمینه استفاده خاص خود را دارد.
| نوع سوایپ | عمل | مثال استفاده |
|---|---|---|
| به چپ | حذف، بایگانی، مخفیسازی | حذف ایمیل در Mail، مخفیسازی در Tinder |
| به راست | تأیید، مشاهده | لایک در Tinder، علامت «خوانده شده» |
| به بالا | بهروزرسانی، بستن | Pull-to-refresh، سوایپ برای بستن پنل |
| به پایین | ناوبری بازگشت، باز کردن | سوایپ به پایین برای بازگشت در iOS، Notification Center |
سوایپهای افقی (چپ/راست) بیشتر برای مدیریت عناصر مجزا استفاده میشوند — حذف، بایگانی، ورق زدن. سوایپهای عمودی (بالا/پایین) — برای ناوبری بین صفحات و بهروزرسانی محتوا. به گزارش Material Design Guidelines (2024)، سوایپ افقی برای راستدستان راحتتر است: حرکت به چپ با شست در دست راست طبیعیتر است.
سوایپهای دو و سه انگشتی برای عملیات پیشرفته استفاده میشوند. دو انگشت — جابجایی بین دسکتاپها در iPad، لغو عمل (three-finger swipe). سه انگشت — اسکرینشات در برخی دستگاهها. با این حال، ژستهای چند انگشتی کمتر بصری هستند و نیاز به آموزش کاربر دارند.
در iOS مدیریت ژستها بر پایه UIGestureRecognizer است — کلاسی انتزاعی که دنباله رویدادهای لمسی را تحلیل میکند و تعیین میکند آیا با ژست خاصی مطابقت دارد یا خیر.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swipeLeft = UISwipeGestureRecognizer(
target: self,
action: #selector(handleSwipe)
)
swipeLeft.direction = .left
view.addGestureRecognizer(swipeLeft)
}
@objc func handleSwipe(sender: UISwipeGestureRecognizer) {
print("کشیدن به چپ")
}
}
UISwipeGestureRecognizer از تنظیم جهت (direction) و تعداد انگشتان (numberOfTouchesRequired) پشتیبانی میکند. به طور پیشفرض یک انگشت و جهت راست نیاز است. برای تعیین جهتهای دیگر باید صریحاً direction: .left, .up, .down را مشخص کرد.
API سطح بالاتر — UICollectionViewLayout با پشتیبانی از اکشنهای سوایپ. از iOS 11 به بعد، جدولها و مجموعهها از اکشنهای سوایپ داخلی از طریق UISwipeActionsConfiguration پشتیبانی میکنند که امکان افزودن دکمههای حذف یا بایگانی بدون مدیریت دستی ژستها را فراهم میکند.
در Android مدیریت سوایپها از طریق GestureDetector انجام میشود — کلاسی که MotionEvents را تحلیل کرده و متدهای callback مربوطه را فراخوانی میکند.
class SwipeActivity : AppCompatActivity() {
private val swipeThreshold = 100
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
override fun onFling(
e1: MotionEvent, e2: MotionEvent,
velocityX: Float, velocityY: Float
): Boolean {
val dx = e2.x - e1.x
if (dx > swipeThreshold) {
println("کشیدن به راست")
}
return true
}
})
}
}
متد onFling در GestureDetector زمانی فراخوانی میشود که کاربر انگشت خود را سریع روی صفحه میکشد. این متد مختصات شروع و پایان (e1, e2) و سرعت حرکت (velocityX, velocityY) را دریافت میکند. برای تعیین جهت، تفاوت مختصات در محور X یا Y مقایسه میشود.
کتابخانه AndroidX API راحتتری ارائه میدهد: ViewCompat.setSwipeRefreshLayout برای pull-to-refresh، RecyclerView با ItemTouchHelper برای اکشنهای سوایپ در لیستها. ItemTouchHelper امکان افزودن قابلیت سوایپ با بازخورد بصری — آیکون، رنگ پسزمینه و انیمیشن — را فراهم میکند.
در توسعه وب برای مدیریت سوایپها از رویدادهای Touch Events API (touchstart, touchmove, touchend) و کتابخانههای کمکی مانند Hammer.js یا Swiper.js استفاده میشود.
let startX = 0;
let startY = 0;
const threshold = 50;
element.addEventListener("touchstart", (e) => {
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
});
element.addEventListener("touchend", (e) => {
const dx = e.changedTouches[0].clientX - startX;
const dy = e.changedTouches[0].clientY - startY;
if (Math.abs(dx) > threshold) {
console.log(dx > 0 ? "کشیدن به راست" : "کشیدن به چپ");
}
});
Touch Events API — روش بومی مدیریت ژستها در مرورگر. رویداد touchstart مختصات اولیه را ثبت میکند، touchmove حرکت را ردیابی میکند، touchend نتیجه را تعیین میکند. مقدار آستانه (threshold) لمسهای تصادفی را فیلتر میکند.
به گزارش Can I Use (2026)، Touch Events API توسط ۹۸٪ مرورگرها پشتیبانی میشود. برای سناریوهای پیچیده ژستی (سوایپهای متعدد، تشخیص جهت) توصیه میشود از کتابخانه Hammer.js استفاده کنید که پردازش سطح پایین را انتزاعی کرده و API قابل فهمی ارائه میدهد.
الگوهای موفق UX با سوایپ در طول سالها تکامل رابطهای موبایل شکل گرفتهاند. استفاده از آنها تضمین میکند که کاربر بدون آموزش اضافی نحوه کار ژست را درک میکند.
الگوی «Swipe to Delete» — رایجترین است. سوایپ به چپ روی یک آیتم لیست دکمه حذف را باز میکند. در iOS (SwipeActionsConfiguration) و Android (ItemTouchHelper) استاندارد شده است. کاربران انتظار دارند سوایپ به چپ آیتم را حذف یا بایگانی کند.
الگوی «Swipe to Go Back» — سوایپ از لبه چپ صفحه برای بازگشت به صفحه قبلی. بعد از iPhone X در iOS به استاندارد تبدیل شد. در Android ناوبری مشابه از طریق ژست سیستمی کار میکند. مهم است که با این ژست سیستمی در اپلیکیشنهای خود تداخل ایجاد نکنید.
الگوی «Pull to Refresh» — سوایپ به پایین برای بهروزرسانی محتوا. توسط Loren Brichter برای Tweetie (2008) اختراع شد، اکنون در میلیونها اپلیکیشن استفاده میشود. در کامپوننتهای استاندارد هر دو پلتفرم پیادهسازی شده است.
سؤالات متداول
سوایپ — حرکت سریع انگشت با جدا شدن بعدی. Drag — جابجایی آهسته با تماس مداوم. تفاوت اصلی در سرعت است: در سوایپ مقدار آستانه velocity مهم است، در drag فقط مختصات حرکت.
iOS و Android از آستانه حدود ۳۰–۵۰ پیکسل استفاده میکنند. برای اپلیکیشنهای وب آستانه ۴۰–۶۰ پیکسل توصیه میشود. مقدار کمتر باعث فعالسازی کاذب هنگام اسکرول میشود، بیشتر — نیاز به حرکات خیلی گسترده دارد.
اولویت ژست را بر اساس جهت تعیین کنید: سوایپ افقی اسکرول عمودی را مسدود میکند، سوایپ عمودی اسکرول افقی را مسدود میکند. در iOS از متد UIScrollViewDelegate gestureRecognizerShouldBegin برای مدیریت اولویت استفاده کنید.
برای سوایپهای استاندارد (حذف، بازگشت) آموزش لازم نیست — کاربران با آنها آشنا هستند. برای ژستهای منحصر به فرد (سوایپ سه انگشتی، جهت غیراستاندارد) نیاز به آموزش همراه با نمایش بصری است.
همیشه اکشنهای سوایپ را با دکمهها تکرار کنید. آستانه فعالسازی را به ۷۰–۱۰۰ پیکسل و تایماوت را به ۸۰۰ میلیثانیه برای کاربران با لرزش دست افزایش دهید. از VoiceOver/TalkBack برای اعلام اکشنهای سوایپ موجود استفاده کنید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.