Long Press एक लॉन्ग प्रेस जेस्चर है जिसमें उंगली एक निश्चित समय (आमतौर पर 0.5–1 सेकंड) के लिए बिना हिलाए स्क्रीन पर रहती है। Tap के विपरीत, Long Press को स्पर्श के क्षण में नहीं, बल्कि विलंब टाइमर समाप्त होने के बाद पहचाना जाता है। इस जेस्चर का उपयोग संदर्भ मेनू लाने, सामग्री पूर्वावलोकन, कई ऑब्जेक्ट चुनने और अतिरिक्त क्रियाएँ सक्रिय करने के लिए किया जाता है। इसे iOS में UILongPressGestureRecognizer के माध्यम से और Android में setOnLongClickListener या GestureDetector के माध्यम से कार्यान्वित किया जाता है।
मुख्य बातें
Long Press (लॉन्ग प्रेस, लॉन्ग टच) एक मल्टी-टच इंटरफ़ेस जेस्चर है जिसमें उपयोगकर्ता स्क्रीन को छूता है और उंगली को एक निर्धारित समय तक स्थिर रखता है। सिस्टम तुरंत प्रतिक्रिया नहीं करता: वह एक टाइमआउट (आमतौर पर 500 मि.से.) की प्रतीक्षा करता है, और उसके समाप्त होने के बाद ही जेस्चर को Long Press के रूप में पहचानता है। यदि उंगली पहले उठा ली जाए — तो जेस्चर को सामान्य Tap के रूप में व्याख्यायित किया जाता है।
यह जेस्चर आधुनिक मोबाइल इंटरफ़ेस का मूलभूत निर्माण खंड है। Apple इसका उपयोग ऐप्स (Messages, Safari, Files) में संदर्भ मेनू लाने के लिए करता है। Google ने Android में टेक्स्ट चयन, होम स्क्रीन पर आइकन पुनर्व्यवस्थित करने और संदर्भ मेनू लाने में Long Press को शामिल किया। वेब इंटरफ़ेस में, लॉन्ग प्रेस अक्सर मोबाइल उपकरणों पर राइट माउस क्लिक का अनुकरण करता है, जहाँ कोई भौतिक राइट बटन नहीं होता।
ऐतिहासिक रूप से, Long Press टच स्क्रीन के लिए संदर्भ मेनू (राइट क्लिक) के विकल्प के रूप में उभरा। पहले कार्यान्वयन रेज़िस्टिव स्क्रीन वाले उपकरणों (Palm, 2000 के दशक की शुरुआत में Windows Mobile) पर दिखाई दिए, लेकिन जेस्चर iPhone और Android के आगमन के साथ ही मानकीकृत हुआ। दोनों प्लेटफ़ॉर्म के Human Interface Guidelines Long Press को एक द्वितीयक क्रिया के रूप में वर्णित करते हैं — Tap का प्रतिस्थापन नहीं, बल्कि कार्यक्षमता का विस्तार।
Long Press और Tap दो अलग-अलग जेस्चर हैं जिनके अलग-अलग अर्थ हैं। Tap एक तत्काल दबाव है: उंगली स्क्रीन को छूती है और 100–300 मि.से. में उठ जाती है। Tap हमेशा एक प्राथमिक क्रिया होती है: ऐप खोलना, बटन दबाना, लिंक का अनुसरण करना। Long Press एक द्वितीयक क्रिया है: संदर्भ मेनू खोलना, संपादन शुरू करना, अतिरिक्त जानकारी दिखाना।
| पैरामीटर | Tap | Long Press |
|---|---|---|
| दबाए रखने का समय | 100–300 मि.से. | 500–1000 मि.से. |
| क्रिया का प्रकार | प्राथमिक | द्वितीयक |
| उदाहरण | लिंक खोलना, बटन दबाना | संदर्भ मेनू, संपादन |
| प्रतिक्रिया | दृश्य (हाइलाइट) | स्पर्शनीय (हैप्टिक फ़ीडबैक) |
| iOS API | UITapGestureRecognizer | UILongPressGestureRecognizer |
| Android API | setOnClickListener | setOnLongClickListener |
मुख्य नियम: कभी भी Long Press का उपयोग किसी क्रिया को करने का एकमात्र तरीका न बनाएँ। उपयोगकर्ता उम्मीद करते हैं कि Tap प्राथमिक क्रिया करेगा, और Long Press अतिरिक्त विकल्प खोलेगा। इस सिद्धांत का उल्लंघन (उदाहरण के लिए, लिंक खोलने के लिए लॉन्ग प्रेस की आवश्यकता) नकारात्मक उपयोगकर्ता अनुभव और कम पहुँच की ओर ले जाता है।
UILongPressGestureRecognizer लॉन्ग प्रेस को संभालने के लिए iOS SDK में मानक जेस्चर पहचानकर्ता है। यह UIGestureRecognizer से विरासत प्राप्त करता है और न्यूनतम अवधि, उंगली की अनुमत गति और स्पर्शों की संख्या के कॉन्फ़िगरेशन का समर्थन करता है। पहचानकर्ता टाइमर समाप्त होने के बाद UIGestureRecognizerStateBegan अवस्था में जाता है, फिर उंगली हिलने पर UIGestureRecognizerStateChanged में, और उंगली उठाने पर UIGestureRecognizerStateEnded में जाता है।
// न्यूनतम अवधि कॉन्फ़िगरेशन के साथ UILongPressGestureRecognizer
class ContextMenuViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let longPressRecognizer = UILongPressGestureRecognizer(
target: self,
action: #selector(handleLongPress(_:))
)
// न्यूनतम दबाए रखने का समय: 0.5 सेकंड
longPressRecognizer.minimumPressDuration = 0.5
// उंगली की अनुमत गति: 10 पॉइंट
longPressRecognizer.allowableMovement = 10
customView.addGestureRecognizer(longPressRecognizer)
}
@objc func handleLongPress(_ recognizer: UILongPressGestureRecognizer) {
guard recognizer.state == .began else { return }
// संदर्भ मेनू बनाना
let location = recognizer.location(in: self.view)
ContextMenuPresenter.show(at: location)
}
}कॉन्फ़िगरेशन पैरामीटर: minimumPressDuration — सक्रियण से पहले सेकंड में समय (डिफ़ॉल्ट 0.5, पहुँच के लिए 0.65+ अनुशंसित); allowableMovement — बिंदुओं में उंगली की अधिकतम गति (डिफ़ॉल्ट 10, बढ़ाने से काँपते हाथों में मदद मिलती है)। iOS मल्टी-टच जेस्चर के लिए numberOfTouchesRequired का समर्थन करता है (जैसे, दो उंगलियों से लॉन्ग प्रेस)। पहचानकर्ता UIContextMenuInteraction के साथ भी एकीकृत होता है — जब UIContextMenuConfiguration के माध्यम से UIView में संदर्भ मेनू जोड़ा जाता है, तो Long Press स्वचालित रूप से बिना मैन्युअल जेस्चर कार्यान्वयन के संदर्भ मेनू को लाता है।
setOnLongClickListener Android SDK में View की एक विधि है जो लॉन्ग प्रेस लिसनर सेट करती है। जब उपयोगकर्ता किसी View को 500 मि.से. से अधिक समय तक दबाए रखता है, तो सिस्टम onLongClick() को कॉल करता है। विधि एक बूलियन लौटाती है — true का अर्थ है कि ईवेंट संभाल लिया गया और आगे प्रसारित नहीं होना चाहिए, false का अर्थ है कि ईवेंट अन्य लिसनर द्वारा संभाला जा सकता है। अधिक जटिल संभालने (Long Press शुरू होने के बाद उंगली की गति) के लिए, OnGestureListener के साथ GestureDetector का उपयोग किया जाता है।
// स्पर्शनीय प्रतिक्रिया के साथ setOnLongClickListener का उदाहरण
val itemView: View = findViewById(R.id.itemView)
itemView.setOnLongClickListener {
// जेस्चर शुरू होने की पुष्टि के लिए स्पर्शनीय प्रतिक्रिया
it.performHapticFeedback(
HapticFeedbackConstants.LONG_PRESS
)
// तत्व की स्थिति पर संदर्भ मेनू दिखाना
val popup = PopupMenu(this, it)
popup.menuInflater.inflate(R.menu.context_menu, popup.menu)
popup.show()
true // ईवेंट संभाल लिया गया
}GestureDetector जेस्चर पर अधिक सूक्ष्म नियंत्रण प्रदान करता है। setOnLongClickListener के विपरीत, GestureDetector शुरुआत (onLongPress), गति (onScroll) और छोड़ने के बारे में सूचित करता है। यह जटिल परिदृश्यों को सक्षम करता है — उदाहरण के लिए, लॉन्ग प्रेस के बाद ड्रैग शुरू करना (Drag-and-Drop)। OnGestureListener के लिए छह विधियों को लागू करना आवश्यक है: onDown, onShowPress, onSingleTapUp, onScroll, onLongPress, onFling।
Long Press का उपयोग दर्जनों मोबाइल इंटरफ़ेस परिदृश्यों में किया जाता है। सबसे सामान्य अनुप्रयोग संदर्भ मेनू है: किसी संपर्क पर लॉन्ग प्रेस संचार विकल्प (कॉल, संदेश, ईमेल) दिखाता है, किसी फ़ाइल पर — विकल्प (कॉपी, मूव, डिलीट), टेक्स्ट पर — चयन और क्लिपबोर्ड। Android लॉन्चर ऐप्स को स्थानांतरित करने और विजेट जोड़ने के लिए आइकन पर लॉन्ग प्रेस का उपयोग करता है।
टेक्स्ट चयन दोनों प्लेटफ़ॉर्म पर Long Press का एक क्लासिक उदाहरण है। iOS में, टेक्स्ट पर लॉन्ग प्रेस कर्सर स्थिति के लिए एक आवर्धक लेंस सक्रिय करता है; एक शब्द पर — इसे मार्करों के साथ चुनता है। Android में, लॉन्ग प्रेस पूरे शब्द का चयन करता है और एक क्रिया पट्टी (कॉपी, कट, पेस्ट) दिखाता है। दोनों प्लेटफ़ॉर्म चयन का विस्तार करने के लिए बाद में मार्कर ड्रैगिंग का उपयोग करते हैं।
पूर्वावलोकन — iOS में, Safari में किसी लिंक या Mail में संदेश पर लॉन्ग प्रेस सामग्री का पूर्वावलोकन (peek) खोलता है। Android में, समान व्यवहार एक सूचना पर Long Press के माध्यम से कार्यान्वित किया जाता है (क्रिया बटनों के साथ सूचना का विस्तार)। फ़ोटो ऐप्स त्वरित छवि पूर्वावलोकन के लिए थंबनेल पर लॉन्ग प्रेस का उपयोग करते हैं।
ड्रैग-एंड-ड्रॉप अक्सर Long Press द्वारा शुरू किया जाता है। उपयोगकर्ता तत्व को दबाए रखता है, सिस्टम ड्रैग मोड में स्विच करता है, और उंगली की गति तत्व को स्क्रीन पर घुमाती है। Android Long Press के बाद View.startDragAndDrop() के माध्यम से इस परिदृश्य का समर्थन करता है। iOS UIDragInteraction का उपयोग करता है, जहाँ ड्रैग इंटरैक्शन को ड्रैगिंग शुरू करने के लिए लॉन्ग प्रेस की आवश्यकता होती है।
दोनों प्लेटफ़ॉर्म के Human Interface Guidelines स्पष्ट सुझाव देते हैं: Long Press हमेशा एक द्वितीयक क्रिया होनी चाहिए। कभी भी लॉन्ग प्रेस को किसी महत्वपूर्ण कार्य को करने का एकमात्र तरीका न बनाएँ। उपयोगकर्ता पहले Tap आज़माते हैं — यदि Tap अपेक्षित रूप से काम नहीं करता, तो वे निराश होते हैं। दृश्य संकेत जोड़ें: संदर्भ मेनू को तीन-बिंदु आइकन द्वारा इंगित किया जा सकता है, और Long Press का समर्थन करने वाले तत्वों को स्पर्श पर एक दृश्य संकेत द्वारा इंगित किया जा सकता है।
स्पर्शनीय प्रतिक्रिया (हैप्टिक फ़ीडबैक) Long Press के लिए अनिवार्य है। जब जेस्चर पहचाना जाता है, तो डिवाइस को स्पर्शनीय प्रतिक्रिया के साथ इसकी पुष्टि करनी चाहिए: iOS में यह हल्के आवेग के साथ UIImpactFeedbackGenerator है, Android में — HapticFeedbackConstants.LONG_PRESS। स्पर्शनीय प्रतिक्रिया के बिना, उपयोगकर्ता को यकीन नहीं होता कि जेस्चर रजिस्टर हुआ और वह फिर से दबा सकता है, जिससे अवांछित क्रियाएँ हो सकती हैं।
| सुझाव | iOS | Android |
|---|---|---|
| पहचान टाइमआउट | 0.5–0.65 सेकंड | 500 मि.से. (डिफ़ॉल्ट) |
| स्पर्शनीय प्रतिक्रिया | UIImpactFeedbackGenerator | HapticFeedbackConstants.LONG_PRESS |
| दृश्य प्रतिक्रिया | संदर्भ मेनू, हाइलाइट | PopupMenu, रिपल एनिमेशन |
| पहुँच (एक्सेसिबिलिटी) | VoiceOver + Custom Actions | TalkBack + AccessibilityNodeInfo |
| अधिकतम उंगली गति | allowableMovement = 10 pt | TouchSlop (~8 dp डिफ़ॉल्ट) |
| स्क्रॉल के साथ विरोध | cancelsTouchesInView = delayed | onInterceptTouchEvent + LongPress |
पहुँच (एक्सेसिबिलिटी): सभी उपयोगकर्ता लॉन्ग प्रेस नहीं कर सकते (मोटर विकलांगता वाले लोग, वृद्ध उपयोगकर्ता)। हमेशा Long Press क्रियाओं तक पहुँचने का एक वैकल्पिक तरीका प्रदान करें — उदाहरण के लिए, इंटरफ़ेस में "अधिक" बटन के माध्यम से या सिस्टम पहुँच सुविधाओं (iOS में VoiceOver, Android में TalkBack) के माध्यम से। iOS के लिए, आप UIAccessibilityCustomAction के माध्यम से Custom Actions जोड़ सकते हैं, जो VoiceOver रोटर के माध्यम से उपलब्ध हैं।
अक्सर पूछे जाने वाले प्रश्न
Long Press के लिए मानक समय दोनों प्लेटफ़ॉर्म पर 0.5 सेकंड (500 मि.से.) है। iOS minimumPressDuration को 0.3 से 1.0 सेकंड तक कॉन्फ़िगर करने की अनुमति देता है। Android View.setOnLongClickListener के लिए 500 मि.से. का निश्चित टाइमआउट उपयोग करता है। सीमित मोटर कौशल वाले उपयोगकर्ताओं के लिए, टाइमआउट को 0.8–1.0 सेकंड तक बढ़ाने की अनुशंसा की जाती है।
Long Press दबाए रखने के समय (0.5 सेकंड) से पहचाना जाता है, 3D Touch — दबाव के बल (ग्राम में) से पहचाना जाता है। 3D Touch केवल iPhone 6S–XR पर उपलब्ध है (हार्डवेयर Force Touch तकनीक)। iOS 13 से शुरू करके, Apple ने 3D Touch को Haptic Touch से बदल दिया — एक सॉफ़्टवेयर सिमुलेशन जो स्पर्शनीय प्रतिक्रिया के साथ Long Press के माध्यम से काम करता है। Haptic Touch सभी आधुनिक iPhone और iPad पर उपलब्ध है।
Long Press और स्क्रॉल के बीच विरोध एक सामान्य समस्या है। समाधान: iOS में जेस्चर पहचानकर्ता के लिए delaysTouchesBegan = true सेट करें (सिस्टम तुरंत touchesBegan नहीं भेजता, बल्कि जेस्चर पहचान की प्रतीक्षा करता है)। Android में, Long Press के लिए false लौटाने वाला onInterceptTouchEvent उपयोग करें। यदि उपयोगकर्ता टाइमआउट से पहले उंगली हिलाना शुरू करता है — तो जेस्चर स्क्रॉल के पक्ष में रद्द कर दिया जाता है।
हाँ, Long Press वेब एप्लिकेशन में समर्थित है समय माप के साथ touchstart/touchend ईवेंट के माध्यम से। आधुनिक ब्राउज़र contextmenu ईवेंट भी समर्थन करते हैं, जो मोबाइल उपकरणों पर लॉन्ग प्रेस पर सक्रिय होता है। क्रॉस-ब्राउज़र संगतता के लिए, hammer.js जैसी लाइब्रेरी का उपयोग करें या touchstart हैंडलर में setInterval के माध्यम से कस्टम पहचानकर्ता लागू करें।
iOS में, स्पर्शनीय प्रतिक्रिया UIImpactFeedbackGenerator के माध्यम से जोड़ी जाती है। UILongPressGestureRecognizer के began अवस्था में संक्रमण के क्षण में impactOccurred() को कॉल करें। हल्की प्रतिक्रिया के लिए, UIImpactFeedbackGenerator(style: .light) का उपयोग करें। अधिक ध्यान देने योग्य प्रतिक्रिया के लिए — .medium। संदर्भ मेनू के लिए, iOS बिना अतिरिक्त कोड के UIContextMenuInteraction के माध्यम से स्वचालित रूप से स्पर्शनीय प्रतिक्रिया जोड़ता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें