Long Press — apa itu, gerakan sentuhan lama di aplikasi

Penulis: IT Sectr Diterbitkan: 2026-02-27 Waktu membaca: 8 mnt

Long Press — gerakan tekan lama, di mana jari ditahan di layar selama waktu tertentu (biasanya 0,5–1 detik) tanpa bergerak. Berbeda dengan Tap, Long Press dikenali bukan pada saat sentuhan, tetapi setelah timer penundaan berakhir. Gerakan ini digunakan untuk memanggil menu konteks, pratinjau, memilih beberapa objek, dan mengaktifkan tindakan tambahan. Diimplementasikan di iOS melalui UILongPressGestureRecognizer, di Android — melalui setOnLongClickListener atau GestureDetector.

Poin Utama

  • Penundaan — perbedaan utama Long Press dari Tap: diperlukan penahanan 0,5–1 detik
  • Menu konteks — penggunaan Long Press yang paling umum: memanggil opsi tambahan untuk elemen
  • UILongPressGestureRecognizer — kelas utama iOS untuk menangani tekan lama dengan callback status
  • setOnLongClickListener — metode Android View yang memanggil pendengar saat tekan lama
  • Multi-state — Long Press melalui status began, changed, ended, cancelled di iOS

Apa itu Long Press?

Long Press (tekan lama, sentuhan lama) — gerakan antarmuka multi-sentuh, di mana pengguna menyentuh layar dan menahan jari diam selama waktu tertentu. Sistem tidak bereaksi seketika: ia menunggu waktu tunggu (biasanya 500 ms) dan hanya setelah itu mengenali gerakan sebagai Long Press. Jika jari dilepaskan lebih awal — gerakan diartikan sebagai Tap biasa.

Gerakan ini adalah blok bangunan fundamental dari antarmuka seluler modern. Apple menggunakannya untuk memanggil menu konteks di aplikasi (Messages, Safari, Files). Google menerapkan Long Press dalam sistem pemilihan teks, memindahkan ikon di desktop, dan memanggil menu konteks di Android. Di antarmuka web, tekan lama sering meniru klik kanan mouse pada perangkat seluler yang tidak memiliki tombol kanan fisik.

Secara historis, Long Press muncul sebagai alternatif menu konteks (klik kanan) untuk layar sentuh. Implementasi pertama ditemukan di perangkat dengan layar resistif (Palm, Windows Mobile awal 2000-an), tetapi gerakan ini baru distandarisasi dengan munculnya iPhone dan Android. Human Interface Guidelines kedua platform menggambarkan Long Press sebagai tindakan sekunder — bukan pengganti Tap, melainkan perluasan fungsionalitas.

Perbedaan Long Press dengan Tap

Long Press dan Tap — dua gerakan berbeda dengan semantik berbeda. Tap (sentuhan) — adalah tekanan instan: jari menyentuh layar dan dilepaskan dalam 100–300 ms. Tap selalu merupakan tindakan utama (primary action): membuka aplikasi, menekan tombol, pergi ke tautan. Long Press — tindakan sekunder (secondary action): membuka menu konteks, memulai pengeditan, menampilkan informasi tambahan.

ParameterTapLong Press
Waktu tahan100–300 ms500–1000 ms
Jenis tindakanUtama (primary)Sekunder (secondary)
ContohMembuka tautan, menekan tombolMenu konteks, pengeditan
Umpan balikVisual (highlight)Haptik (Haptic Feedback)
iOS APIUITapGestureRecognizerUILongPressGestureRecognizer
Android APIsetOnClickListenersetOnLongClickListener

Aturan kunci: jangan pernah menggunakan Long Press sebagai satu-satunya cara untuk melakukan suatu tindakan. Pengguna mengharapkan Tap melakukan tindakan utama, dan Long Press membuka opsi tambahan. Pelanggaran prinsip ini (misalnya, memerlukan tekan lama untuk membuka tautan) menyebabkan pengalaman pengguna negatif dan penurunan aksesibilitas.

Long Press di iOS: UILongPressGestureRecognizer

UILongPressGestureRecognizer — pengenal gerakan standar di iOS SDK untuk menangani tekan lama. Ia mewarisi dari UIGestureRecognizer dan mendukung konfigurasi durasi minimum, pergerakan jari yang diizinkan, dan jumlah sentuhan. Pengenal beralih ke status UIGestureRecognizerStateBegan setelah timer berakhir, kemudian ke UIGestureRecognizerStateChanged saat jari bergerak dan UIGestureRecognizerStateEnded saat dilepaskan.

swift
// UILongPressGestureRecognizer dengan konfigurasi durasi minimum
class ContextMenuViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let longPressRecognizer = UILongPressGestureRecognizer(
            target: self,
            action: #selector(handleLongPress(_:))
        )

        // Waktu tahan minimum: 0.5 detik
        longPressRecognizer.minimumPressDuration = 0.5

        // Pergerakan jari yang diizinkan: 10 titik
        longPressRecognizer.allowableMovement = 10

        customView.addGestureRecognizer(longPressRecognizer)
    }

    @objc func handleLongPress(_ recognizer: UILongPressGestureRecognizer) {
        guard recognizer.state == .began else { return }

        // Membuat menu konteks
        let location = recognizer.location(in: self.view)
        ContextMenuPresenter.show(at: location)
    }
}

Parameter konfigurasi: minimumPressDuration — waktu dalam detik hingga pemicuan (standar 0.5, untuk aksesibilitas disarankan 0.65+); allowableMovement — pergerakan maksimum jari dalam titik (standar 10, peningkatan membantu saat tremor). iOS mendukung numberOfTouchesRequired untuk gerakan multi-sentuh (misalnya, tekan lama dengan dua jari). Pengenal juga terintegrasi dengan UIContextMenuInteraction — ketika menu konteks ditambahkan ke UIView melalui UIContextMenuConfiguration, Long Press secara otomatis memanggil menu konteks tanpa implementasi manual gerakan.

Long Press di Android: setOnLongClickListener

setOnLongClickListener — metode View di Android SDK yang mengatur pendengar tekan lama. Ketika pengguna menahan View lebih dari 500 ms, sistem memanggil onLongClick(). Metode mengembalikan boolean — true berarti peristiwa telah ditangani dan tidak boleh diteruskan lebih lanjut, false — peristiwa dapat ditangani oleh pendengar lain. Untuk penanganan yang lebih kompleks (pergerakan jari setelah Long Press dimulai) digunakan GestureDetector dengan OnGestureListener.

kotlin
// Contoh setOnLongClickListener dengan umpan balik haptik
val itemView: View = findViewById(R.id.itemView)

itemView.setOnLongClickListener {
    // Respons haptik untuk mengkonfirmasi awal gerakan
    it.performHapticFeedback(
        HapticFeedbackConstants.LONG_PRESS
    )

    // Menampilkan menu konteks di posisi elemen
    val popup = PopupMenu(this, it)
    popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
    popup.show()

    true // Peristiwa ditangani
}

GestureDetector memberikan kontrol yang lebih halus atas gerakan. Berbeda dengan setOnLongClickListener, GestureDetector memberitahukan tentang awal (onLongPress), pergerakan (onScroll) dan pelepasan. Ini memungkinkan implementasi skenario kompleks — misalnya, memulai seret setelah tekan lama (Drag-and-Drop). OnGestureListener memerlukan implementasi enam metode: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling.

Di mana tekan lama digunakan

Long Press digunakan dalam puluhan skenario antarmuka seluler. Penggunaan yang paling umum adalah menu konteks: tekan lama pada kontak menunjukkan opsi komunikasi (panggilan, pesan, email), pada file — opsi (salin, pindah, hapus), pada teks — pemilihan dan clipboard. Android Launcher menggunakan tekan lama pada ikon untuk memindahkan aplikasi dan menambahkan widget.

Pemilihan teks — contoh klasik Long Press di kedua platform. Di iOS, tekan lama pada teks mengaktifkan kaca pembesar untuk memposisikan kursor; pada kata — memilihnya dengan penanda. Di Android, tekan lama memilih seluruh kata dan menampilkan panel tindakan (salin, potong, tempel). Kedua platform kemudian menggunakan seretan penanda untuk memperluas pemilihan.

Pratinjau — di iOS, tekan lama pada tautan di Safari atau pesan di Mail membuka pratinjau konten (peek). Di Android, perilaku serupa diimplementasikan melalui Long Press pada notifikasi (memperluas notifikasi dengan tombol tindakan). Aplikasi Foto menggunakan tekan lama pada thumbnail untuk pratinjau cepat gambar.

Drag-and-Drop sering dimulai dengan Long Press. Pengguna menahan elemen, sistem beralih ke mode seret, dan pergerakan jari memindahkan elemen di layar. Android mendukung skenario ini melalui View.startDragAndDrop() setelah Long Press. iOS menggunakan UIDragInteraction, di mana interaksi seret memerlukan tekan lama untuk memulai penyeretan.

Rekomendasi penggunaan Long Press

Human Interface Guidelines kedua platform memberikan rekomendasi yang jelas: Long Press harus selalu menjadi tindakan sekunder. Jangan pernah menjadikan tekan lama sebagai satu-satunya cara untuk menjalankan fungsi kritis. Pengguna pertama-tama mencoba Tap — jika Tap tidak berfungsi seperti yang diharapkan, mereka kecewa. Tambahkan petunjuk visual: menu konteks dapat ditandai dengan ikon tiga titik, dan elemen yang mendukung Long Press — dengan isyarat visual saat disentuh.

Umpan balik haptik wajib untuk Long Press. Ketika gerakan dikenali, perangkat harus mengkonfirmasinya dengan respons haptik: di iOS ini adalah UIImpactFeedbackGenerator dengan impuls ringan, di Android — HapticFeedbackConstants.LONG_PRESS. Tanpa umpan balik haptik, pengguna tidak yakin gerakan telah berhasil dan dapat menekan lagi, menyebabkan tindakan yang tidak diinginkan.

RekomendasiiOSAndroid
Waktu tunggu pengenalan0.5–0.65 detik500 ms (default)
Umpan balik haptikUIImpactFeedbackGeneratorHapticFeedbackConstants.LONG_PRESS
Umpan balik visualMenu konteks, penyorotanPopupMenu, animasi ripple
Aksesibilitas (Accessibility)VoiceOver + Custom ActionsTalkBack + AccessibilityNodeInfo
Pergerakan maks. jariallowableMovement = 10 ptTouchSlop (standar ~8 dp)
Konflik dengan gulircancelsTouchesInView = delayedonInterceptTouchEvent + LongPress

Aksesibilitas: tidak semua pengguna dapat melakukan tekan lama (orang dengan gangguan motorik, pengguna lanjut usia). Selalu sediakan cara alternatif untuk mengakses tindakan Long Press — misalnya, melalui tombol «Lainnya» di antarmuka atau melalui fungsi aksesibilitas sistem (VoiceOver di iOS, TalkBack di Android). Untuk iOS, dapat ditambahkan Custom Actions di UIAccessibilityCustomAction yang dapat diakses melalui rotor VoiceOver.

Pertanyaan yang Sering Diajukan

Berapa waktu tahan standar untuk Long Press?

Waktu standar untuk Long Press adalah 0,5 detik (500 ms) di kedua platform. iOS memungkinkan konfigurasi minimumPressDuration dari 0.3 hingga 1.0 detik. Android menggunakan waktu tunggu tetap 500 ms untuk View.setOnLongClickListener. Untuk pengguna dengan mobilitas terbatas, disarankan untuk meningkatkan waktu tunggu menjadi 0,8–1,0 detik.

Apa perbedaan antara Long Press dan 3D Touch?

Long Press dikenali berdasarkan waktu tahan (0,5 dtk), 3D Touch — berdasarkan kekuatan tekan (gram tekanan). 3D Touch hanya tersedia di iPhone 6S–XR (teknologi hardware Force Touch). Mulai iOS 13, Apple mengganti 3D Touch dengan Haptic Touch — tiruan perangkat lunak yang bekerja melalui Long Press dengan umpan balik haptik. Haptic Touch tersedia di semua iPhone dan iPad modern.

Bagaimana cara menghindari konflik Long Press dengan gulir (ScrollView)?

Konflik Long Press dan gulir adalah masalah umum. Solusi: atur delaysTouchesBegan = true untuk pengenal gerakan di iOS (sistem tidak mengirim touchesBegan segera, tetapi menunggu pengenalan gerakan). Di Android, gunakan onInterceptTouchEvent yang mengembalikan false untuk Long Press. Jika pengguna mulai menggerakkan jari sebelum waktu tunggu — gerakan dibatalkan demi pengguliran.

Bisakah Long Press digunakan untuk aplikasi web (PWA)?

Ya, Long Press didukung di aplikasi web melalui peristiwa touchstart/touchend dengan pengukuran waktu. Browser modern juga mendukung peristiwa contextmenu yang dipicu saat tekan lama pada perangkat seluler. Untuk kompatibilitas lintas browser, gunakan pustaka seperti hammer.js atau implementasikan pengenal khusus melalui setInterval di penangan touchstart.

Bagaimana cara menambahkan umpan balik haptik saat Long Press di iOS?

Di iOS, umpan balik haptik ditambahkan melalui UIImpactFeedbackGenerator. Panggil impactOccurred() pada saat UILongPressGestureRecognizer beralih ke status began. Untuk respons ringan, gunakan UIImpactFeedbackGenerator(style: .light). Untuk yang lebih terasa — .medium. Untuk menu konteks, iOS secara otomatis menambahkan umpan balik haptik melalui UIContextMenuInteraction tanpa kode tambahan.

Ringkasan

  • Long Press — gerakan menahan jari di layar selama 0,5–1 detik untuk memanggil tindakan sekunder
  • Perbedaan dengan Tap — Tap dilakukan seketika (primary action), Long Press memerlukan waktu tunggu (secondary action)
  • iOS API — UILongPressGestureRecognizer dengan parameter minimumPressDuration dan allowableMovement
  • Android API — View.setOnLongClickListener dan GestureDetector.OnGestureListener
  • Penggunaan — menu konteks, pemilihan teks, pratinjau, inisiasi Drag-and-Drop
  • Umpan balik haptik — wajib untuk mengkonfirmasi pengenalan gerakan kepada pengguna
  • Aksesibilitas — selalu sediakan akses alternatif ke tindakan Long Press

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga