दिलचस्प पोस्ट
संस्करण नियंत्रण के साथ आरंभ करना IOS अनुप्रयोग द्वारा एक उपकरण पर बनाई गई फ़ाइलों को ब्राउज़ करें, मैं वर्कस्टेशन पर विकासशील हूं? घातक चेतावनी प्राप्त की गई: SSLHandshakeException के माध्यम से हैंडशेक_फाइल एचटीएमएल पासवर्ड फ़ील्ड के दिखाए प्रतीकों को बदलना मैं रनटाइम पर एक चर का प्रकार प्राप्त करना चाहता हूं सैश प्रतिस्थापन के साथ बाश चर नल मॉडल के साथ प्रस्तुत करना गलत प्रकार से पारित हो जाता है जब उपयोगकर्ता jQuery के साथ div के नीचे स्क्रॉल करता है गिट, घातक: रिमोट एंड ने अनपेक्षित रूप से लटका दिया लूपिंग के बिना बहुआयामी सरणी में विशिष्ट "कुंजी" की सरणी कैसे प्राप्त करें नक्शा v2 में कस्टम डेटा के साथ कस्टम जानकारी विंडो एडॉप्टर HTML फ़ील्ड अपलोड में पाठ फ़ील्ड कैसे छुपाएं I क्यों करता है "मैमेट (arr, -1, sizeof (arr) / sizeof (int))" -1 के लिए एक पूर्णांक सरणी स्पष्ट नहीं? फ्लास्क क्या यूआरएल रूटिंग में नियमित अभिव्यक्ति का समर्थन करता है? एक तारीख में मिलीसेकंड परिवर्तित (jQuery / JS)

UILongPressGestureRecognizer नीचे दबाने पर दो बार कहलाता है

मुझे पता चल रहा है कि उपयोगकर्ता ने 2 सेकंड के लिए दबा दिया है:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 2.0; [self addGestureRecognizer:longPress]; [longPress release]; 

इस तरह मैं लंबे प्रेस को संभालता हूं:

 -(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{ NSLog(@"double oo"); } 

जब मैं 2 सेकेंडों से अधिक समय तक दबाता हूं तो पाठ "डबल ऊ" दो बार मुद्रित हो जाता है ऐसा क्यों है? मैं कैसे तय कर सकता हूं?

Solutions Collecting From Web of "UILongPressGestureRecognizer नीचे दबाने पर दो बार कहलाता है"

UILongPressGestureRecognizer एक सतत घटना पहचानकर्ता है आपको यह देखने के लिए राज्य को देखना होगा कि क्या यह घटना की शुरुआत, मध्य या अंत है और तदनुसार कार्य करें। यानी आप शुरू होने के बाद सभी घटनाओं को फेंक सकते हैं, या केवल आपको आंदोलन की आवश्यकता के अनुसार ही देख सकते हैं। कक्षा संदर्भ से :

लंबे प्रेस इशारों निरंतर हैं इशारे शुरू होता है (UIGestureRecognizerStateBegan) जब स्वीकार्य उंगलियों की संख्या (numberOfTouchesRequired) को निर्दिष्ट अवधि (न्यूनतम प्रेसड्यूबेशन) के लिए दबाया जाता है और स्पर्श स्वीकार्य श्रेणी की गति (स्वीकार्य मल्टीमेंट) से आगे नहीं बढ़ता है। जब भी कोई उंगली चलती है, तब इशारा पहचानकर्ता परिवर्तन राज्य में बदलाव करता है, और यह समाप्त होता है (UIGestureRecognizerStateEnded) जब किसी भी उंगलियों को हटा दिया जाता है

अब आप इस तरह राज्य को ट्रैक कर सकते हैं

 - (void)handleLongPress:(UILongPressGestureRecognizer*)sender { if (sender.state == UIGestureRecognizerStateEnded) { NSLog(@"UIGestureRecognizerStateEnded"); //Do Whatever You want on End of Gesture } else if (sender.state == UIGestureRecognizerStateBegan){ NSLog(@"UIGestureRecognizerStateBegan."); //Do Whatever You want on Began of Gesture } } 

UILongPressGestureRecognizer की स्थिति की जांच करने के लिए सिर्फ चयनकर्ता विधि पर एक बयान जोड़ें:

 - (void)handleLongPress:(UILongPressGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateEnded) { NSLog(@"Long press Ended"); } else if (sender.state == UIGestureRecognizerStateBegan) { NSLog(@"Long press detected."); } } 

आपको सही स्थिति जांचनी होगी, क्योंकि प्रत्येक राज्य के लिए अलग-अलग व्यवहार हैं। सबसे अधिक संभावना है कि आपको UILGRESSRecognizerStateBegan राज्य को UILongPressGestureRecognizer के साथ की आवश्यकता होगी।

 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 1.0; [myView addGestureRecognizer:longPress]; [longPress release]; 

 - (void)handleLongPress:(UILongPressGestureRecognizer *)gesture { if(UIGestureRecognizerStateBegan == gesture.state) { // Called on start of gesture, do work here } if(UIGestureRecognizerStateChanged == gesture.state) { // Do repeated work here (repeats continuously) while finger is down } if(UIGestureRecognizerStateEnded == gesture.state) { // Do end work here when finger is lifted } } 

बस यह प्रयास करें:

उद्देश्य सी

 - (void)handleLongPress:(UILongPressGestureRecognizer*)sender { if (sender.state == UIGestureRecognizerStateEnded) { NSLog(@"Long press Ended"); } else if (sender.state == UIGestureRecognizerStateBegan) { NSLog(@"Long press detected."); } } 

स्विफ्ट 2.2:

 func handleLongPress(sender:UILongPressGestureRecognizer) { if (sender.state == UIGestureRecognizerState.Ended) { print("Long press Ended"); } else if (sender.state == UIGestureRecognizerState.Began) { print("Long press detected."); } } 

स्विफ्ट में इसे कैसे प्रबंधित करें यह यहां दिया गया है:

 func longPress(sender:UILongPressGestureRecognizer!) { if (sender.state == UIGestureRecognizerState.Ended) { println("Long press Ended"); } else if (sender.state == UIGestureRecognizerState.Began) { println("Long press detected."); } } 

स्विफ्ट 3.0:

 func handleLongPress(sender: UILongPressGestureRecognizer) { if sender.state == .ended { print("Long press Ended") } else if sender.state == .began { print("Long press detected") } 

आपका इशारे हेन्डलर प्रत्येक राज्य इशारा के लिए कॉल प्राप्त करता है इसलिए आपको प्रत्येक राज्य के लिए एक जांच करने और अपने कोड को आवश्यक स्थिति में डाल दिया है।

अगर-दूसरे पर स्विच-केस का उपयोग करना चाहिए:

 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 1.0; [myView addGestureRecognizer:longPress]; [longPress release]; 

 -(void)handleLongPress:(UILongPressGestureRecognizer *)gesture { switch(gesture.state){ case UIGestureRecognizerStateBegan: NSLog(@"State Began"); break; case UIGestureRecognizerStateChanged: NSLog(@"State changed"); break; case UIGestureRecognizerStateEnded: NSLog(@"State End"); break; default: break; } }