दिलचस्प पोस्ट
क्या फ़र्क (फ़ंक्शन () {…} () में अंतर है); और (फ़ंक्शन () {…}} () ;? सीएसएस का इस्तेमाल करते हुए मैं कैसे फॉर्म फ़ील्ड को निष्क्रिय कर सकता हूं? जावा में एक सूची को कैसे सीरियल करना है? डैपर के साथ मैं एक डालें और वापस सम्मिलित पहचान कैसे करूं? Windows पर एक बंदरगाह पर कौन सी प्रक्रिया सुन रही है आप यह कैसे पता लगा सकते हैं? इंटरफ़ेस विधियों में अंतिम तर्क – क्या बात है? अपना स्वयं का लैरवेल एपीआई खपत करना फ्लास्क अनुरोध में प्राप्त आंकड़े कैसे प्राप्त करें MySQL डाटा – पेजिंग को लागू करने का सबसे अच्छा तरीका है? JQuery में इनपुट परिवर्तन का पता लगा रहा है? किसी विशिष्ट आईपी रेंज में इनपुट आईपी की जांच कैसे करें स्तंभ नाम के साथ अनपिवट करें "बिग ओ" संकेतन के एक सादे अंग्रेजी व्याख्या क्या है? क्या सी ++ 11 में स्थानीय स्थैतिक चर प्रारंभिक धागा सुरक्षित है? शैली कैसे करें <option> केवल सीएसएस के साथ?

UIButton टच और होल्ड

मुझे ऐसा करने का एक बहुत आसान तरीका नहीं मिला है। मैंने जिस तरह से देखा है, इन सभी टाइमर और सामान की आवश्यकता होती है। क्या कोई आसान तरीका है कि मैं UIButton को पकड़ कर रख सकता हूं और जब तक इसे जारी नहीं किया जाता है तब तक इसे दोबारा कार्रवाई करने का कारण बनता है?

वेब के समाधान से एकत्रित समाधान "UIButton टच और होल्ड"

आप निम्न कार्य कर सकते हैं: एक NSTimer बनाओ जो ऐप शुरू होने पर या प्रारंभ में शुरू हो जाएगा और बुलियन भी बनायेगा।

उदाहरण के लिए:

//Declare the timer, boolean and the needed IBActions in interface. @interface className { NSTimer * timer; bool g; } -(IBAction)theTouchDown(id)sender; -(IBAction)theTouchUpInside(id)sender; -(IBAction)theTouchUpOutside(id)sender; //Give the timer properties. @property (nonatomic, retain) NSTimer * timer; 

अब आपकी कार्यान्वयन फ़ाइल (। एम) में:

 //Synthesize the timer @synthesize timer; //When your view loads initialize the timer and boolean. -(void)viewDidLoad { g = false; timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; } 

अब "टच डाउन" के लिए IBAction बनाओ बुलियन को सही कहने के लिए सेट करें फिर "टच अप इनसाइड" और "टच अप आउट" के लिए एक और एबैक्शन बटन बनाएं, बूलियन को झूठे के लिए असाइन करें।

उदाहरण के लिए:

 -(IBAction)theTouchDown { g = true; } -(IBAction)theTouchUpInside { g = false; } -(IBAction)theTouchUpOutside { g = false; } 

तब उस NSTimer विधि में, निम्नलिखित को लिखें: (मान लीजिए बुलियन आपने घोषित किया है)

 -(void) targetmethod:(id)sender { if (g == true) { //This is for "Touch and Hold" } else { //This is for the person is off the button. } } 

मुझे उम्मीद है कि यह सब कुछ सरल करता है … मुझे पता है कि यह अभी भी टाइमर का उपयोग करता है, लेकिन एक और तरीका नहीं है

दुर्भाग्य से, ऐसा लगता है कि आपको अपने लिए इस कार्यक्षमता को कोड करना होगा सबसे सरल तरीका (हालांकि आपको अभी भी टाइमर की आवश्यकता है):

ऐसा फ़ंक्शन जो वह कार्य करता है जिसे आप दोहराना चाहते हैं:

 -(void) actionToRepeat:(NSTimer *)timer { NSLog(@"Action triggered"); } 

आपकी .h फाइल में टाइमर के लिए एक घोषित घोषित करें और संपत्ति सेट करें:

 @interface ClassFoo { NSTimer* holdTimer; } 

फिर दो एमबीटी बनाओ।

 -(IBAction) startAction: (id)sender { holdTimer = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(actionToRepeat:) userInfo:nil repeats:YES]; [holdTimer retain]; } -(IBAction) stopAction: (id)sender { [holdTimer invalidate]; [holdTimer release]; holdTimer = nil; } 

तो बस आईबी में Touch Down इवेंट में बटन से शुरू करने के लिए एक्शन और 'स्टॉप एक्शन' के लिए Touch Up Inside लिंक Touch Down यह एक लाइनर नहीं है लेकिन यह आपको दर को दोहराता है और साथ ही आपको किसी अन्य आउटलेट / एक्शन से ट्रिगर करने की अनुमति देता है।

यदि आप अक्सर इस कार्यक्षमता का उपयोग करने जा रहे हैं, तो आप उप- UIButton पर विचार कर सकते हैं और इस कार्यक्षमता को जोड़ सकते हैं – तो पहली बार लागू करने के लिए यह केवल (थोड़ी) दर्दनाक है

इस NBTouchAndHoldButton का उपयोग करने का एक अन्य तरीका यह वास्तव में आप क्या चाहते हैं, और इसे लागू करने में बहुत आसान है:

 TouchAndHoldButton * pageDownButton = [TouchAndHoldButton buttonWithType:UIButtonTypeCustom]; [pageDownButton addTarget:self action:@selector(pageDownAction:) forTouchAndHoldControlEventWithTimeInterval:0.2]; 

सौभाग्य!

मैं पहले एक का जवाब नहीं दे सकता, लेकिन यह पंक्ति:

 timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 

कम से कम आईओएस 4.1 और नई जरूरतों के लिए:

 timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES]; 

मुझे पता है कि यह एक पुराना सवाल है, लेकिन एक आसान तरीका के रूप में, "[NSObject performSelector: withObject: afterDelay:]" का उपयोग करने पर विचार करना जैसे किसी विशेष समय अंतराल में बार-बार तरीकों का आह्वान करना।

इस मामले में:

 NSTimeInterval someTimeInterval = 1; - (IBAction)action:(id)sender { UIButton * const button = sender; if (button.state != UIControlStateHighlighted) { return; } [NSObject cancelPreviousPerformRequestsWithTarget:self selector:_cmd object:sender]; [self performSelector:_cmd withObject:sender afterDelay:someTimeInterval]; }