दिलचस्प पोस्ट
सी # में HTTP पोस्ट XML डेटा स्विफ्ट 3 ग़लत स्ट्रिंग इंटरप्रोलेशन जिसमें अन्तर्निहित अवांछित विकल्प हैं एंड्रॉइड एम – रनटाइम अनुमति जांचें – यह निर्धारित करने के लिए कि क्या उपयोगकर्ता ने "फिर से कभी पूछें" की जांच नहीं की? मुझे एंड्रॉइड अकाउंट मैनेजर का क्या उपयोग करना चाहिए? PHP का उपयोग करते हुए सक्रिय लिंक में प्लेन टेक्स्ट यूआरएल चालू करें एंड्रॉइड – एक फ़ोल्डर खोलें? डॉक करने वाले कंटेनर के लिए स्थिर आईपी असाइन करें किसी फ़ंक्शन के अंदर कैसे उपयोग करें? स्ट्रिंग में सबस्ट्रिंग के लिए खोज करने के लिए फास्ट एल्गोरिथ्म INITifyProperty को लागू करें उत्पन्न इकाई फ़्रेमवर्क क्लासेस पर परिवर्तित Mod_Rewrite अप्रत्याशित व्यवहार एल झंडा JQuery में jQuery का उपयोग करके कैस्केडिंग ड्रॉप डाउन सूची कैसे बनाएं हाइबरनेट के साथ स्प्रिंग सुरक्षा 3 डेटाबेस प्रमाणीकरण जावा में yyyy-MM-dd प्रारूप के लिए कैलेंडर की तारीख स्ट्रिंग सीमांकक के साथ स्ट्रिंग कैसे विभाजित कर सकता हूं?

UIButton लांग प्रेस इवेंट

मैं एक लंबे प्रेस बटन का अनुकरण करना चाहता हूं, मैं यह कैसे कर सकता हूं? मुझे लगता है कि टाइमर की आवश्यकता है मैं UILongPressGestureRecognizer देख रहा हूँ, लेकिन मैं इस प्रकार का उपयोग कैसे कर सकता हूँ?

Solutions Collecting From Web of "UIButton लांग प्रेस इवेंट"

आप बटन पर UILongPressGestureRecognizer उदाहरण को बनाने और संलग्न करके शुरू कर सकते हैं।

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

और फिर जो इशारा संभालता है वह विधि लागू करें

 - (void)longPress:(UILongPressGestureRecognizer*)gesture { if ( gesture.state == UIGestureRecognizerStateEnded ) { NSLog(@"Long Press"); } } 

अब यह बुनियादी दृष्टिकोण होगा आप प्रेस की न्यूनतम अवधि भी निर्धारित कर सकते हैं और कितना त्रुटि संतोषजनक है। और यह भी ध्यान रखें कि विधि को कई बार कहा जाता है यदि आप इशारे को पहचानने के बाद यदि आप इसके अंत में कुछ करना चाहते हैं, तो आपको इसकी स्थिति जांचनी होगी और उसे संभालना होगा।

स्वीकार्य उत्तर के विकल्प के रूप में, यह इंटरफ़ेस बिल्डर का उपयोग करते हुए Xcode में बहुत आसानी से किया जा सकता है।

बस ऑब्जेक्ट लाइब्रेरी से लांग प्रेस इशारे पहचानकर्ता को खींचें और उसे बटन के शीर्ष पर छोड़ दें जहां आप लंबे समय तक प्रेस कार्रवाई चाहते हैं।

इसके बाद, आपके दृश्य नियंत्रक को सिर्फ लंबे प्रेस जेस्चर पहचानकर्ता से एक्शन से कनेक्ट करें, प्रेषक को टाइप करने के लिए UILongPressGestureRecognizer टाइप करें उस IBAction के कोड में यह प्रयोग किया जाता है, जो स्वीकार किए गए उत्तर में सुझाए गए कोड के समान है:

उद्देश्य-सी में :

 if ( sender.state == UIGestureRecognizerStateEnded ) { // Do your stuff here } 

या स्विफ्ट में :

 if sender.state == .Ended { // Do your stuff here } 

लेकिन मुझे यह स्वीकार करना होगा कि कोशिश करने के बाद, मैं @ शेनगिनमेंग द्वारा दिए गए सुझाव को स्वीकृत उत्तर के लिए एक टिप्पणी के रूप में पसंद करता हूं, जिसका इस्तेमाल करना था:

उद्देश्य-सी में :

 if ( sender.state == UIGestureRecognizerStateBegan ) { // Do your stuff here } 

या स्विफ्ट में :

 if sender.state == .Began { // Do your stuff here } 

फर्क यह है कि Ended साथ, जब आप अपनी उंगली उठाते हैं, तो आप लंबे प्रेस के प्रभाव को देखते हैं। Began साथ, आप लंबे प्रेस के प्रभाव को देखते हैं जैसे कि लंबे प्रेस को सिस्टम द्वारा पकड़ा जाता है, इससे पहले कि आप स्क्रीन से उंगली उठाएं।

स्वीकृत उत्तर का स्विफ्ट संस्करण

मैंने UIGestureRecognizerState.Began का उपयोग करने के लिए अतिरिक्त संशोधन किया है। चूंकि यह शायद संभवतः अधिकांश उपयोगकर्ता स्वाभाविक रूप से अपेक्षा करते हैं उन्हें दोनों की कोशिश करें और अपने आप को देखें, यद्यपि।

 import UIKit class ViewController: UIViewController { @IBOutlet weak var button: UIButton! override func viewDidLoad() { super.viewDidLoad() // add guesture recognizer let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPress(_:))) self.button.addGestureRecognizer(longPress) } func longPress(guesture: UILongPressGestureRecognizer) { if guesture.state == UIGestureRecognizerState.Began { print("Long Press") } } @IBAction func normalButtonTap(sender: UIButton) { print("Button tapped") } } 

इसे इस्तेमाल करे:

दृश्य में बटन जोड़ना इस तरह लोड किया था

 -(void)viewDidLoad { UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn setTag:1]; //you can set any integer value as tag number btn.title = @"Press Me"; [btn setFrame:CGRectMake(50.0, 50.0, 60.0, 60.0)]; // now create a long press gesture UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressTap:)]; [btn addGestureRecognizer:longPress]; } 

अब इस तरह की इशारा पद्धति को बुलाओ

 -(void)longPressTap:(id)sender { UIGestureRecognizer *recognizer = (UIGestureRecognizer*) sender //recogniser have all property of button on which you have clicked //now you can compare button tag with recogniser tag //view frame for getting the info on which button the click event has been happened //then compare tag like this if(recognizer.view.tag == 1) { //put your button's click code here } //and you can also compare the frame of your button with recogniser's view CGRect btnRect = CGRectMake(50.0, 50.0, 60.0, 60.0); if(recogniser.view.frame == btnRect) { //put your button's click code here } //remember frame comparing is alternative method you dont need //to write frame comparing code if you are matching the tag number of button } 

मुझे लगता है कि आपको मेरे समाधान की आवश्यकता है

आपको एकल प्रेस के लिए यह कोड होना चाहिए

 - (IBAction)buttonDidPress:(id)sender { NSLog("buttonDidPress"); } 

पहले, बटन को लंबे समय तक प्रेस इशारा जोड़ें

 - (void)viewWillAppear:(BOOL)animated { UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(buttonDidLongPress:)]; [self.button addGestureRecognizer:longPress]; } 

फिर एकल प्रेस इवेंट बार-बार कॉल करें अगर लंबे समय से प्रेस इशारेरेशन को मान्यता दी जाती है।

 - (void)buttonDidLongPress:(UILongPressGestureRecognizer*)gesture { switch (gesture.state) { case UIGestureRecognizerStateBegan: { self.timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(buttonDidPress:) userInfo:nil repeats:YES]; NSRunLoop * theRunLoop = [NSRunLoop currentRunLoop]; [theRunLoop addTimer:self.timer forMode:NSDefaultRunLoopMode]; } break; case UIGestureRecognizerStateEnded: { [self.timer invalidate]; self.timer = nil; } break; default: break; } } 

जेस्चर मान्यता के लिए स्टोरी बोर्ड का उपयोग करना बहुत आसान है। इशारा मान्यता के लिए स्टैनफोर्ड से इस वीडियो की जांच करें https://www.youtube.com/watch?v=85IUfbgp0v8

मेरे ऐप के लिए मेरे पास एक सबक्लास्ड यूआई बटन है, इसलिए मैंने अपना कार्यान्वयन निकाला है आप इसे अपने उपवर्ग में जोड़ सकते हैं या यह आसानी से एक UIButton श्रेणी के रूप में recoded किया जा सकता है।

मेरे लक्ष्य को मेरे सारे नियंत्रकों को बिना कंट्रोलिंग के सभी कोड के साथ अपने बटन पर लंबे समय तक प्रेस करना था मैंने तय किया है कि जब इशारे पहचानकर्ता राज्य शुरू होता है तो कार्रवाई को बुलाया जाना चाहिए।

एक चेतावनी सामने आई है जो मुझे हल करने के लिए कभी परेशान नहीं हुई है। कहते हैं कि यह एक संभावित रिसाव है, मैंने सोचा कि मैंने कोड का परीक्षण किया है और यह रिसाव नहीं करता है

 @interface MYLongButton () @property (nonatomic, strong) UILongPressGestureRecognizer *gestureRecognizer; @property (nonatomic, strong) id gestureRecognizerTarget; @property (nonatomic, assign) SEL gestureRecognizerSelector; @end @implementation MYLongButton - (void)addLongPressTarget:(CGFloat)interval target:(id)target action:(SEL)selector { _gestureRecognizerTarget = target; _gestureRecognizerSelector = selector; _gestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPressGestureRecognizer:)]; _gestureRecognizer.minimumPressDuration = interval; [self addGestureRecognizer:_gestureRecognizer]; } - (void)handleLongPressGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { NSAssert([_gestureRecognizerTarget respondsToSelector:_gestureRecognizerSelector], @"target does not respond to selector"); self.highlighted = NO; // warning on possible leak -- can anybody fix it? [_gestureRecognizerTarget performSelector:_gestureRecognizerSelector withObject:self]; } } 

एक्शन को अपने व्यूडिडलोड विधि में जोड़ दें।

 [_myLongButton addLongPressTarget:0.75 target:self selector:@selector(longPressAction:)]; 

कार्रवाई को सभी IBActions जैसे IBAction के बिना परिभाषित किया जाना चाहिए।

 - (void)longPressAction:(id)sender { // sender is the button }