Intereting Posts
मैं एक टेबल व्यू सेल कैसे बना सकता हूँ जो अपनी सामग्री को फिट करने के लिए गतिशील रूप से उसकी ऊंचाई को बदलता है? मेरा एप क्यों क्रैश हो रहा है यह कैसे पता चलेगा? मैं कैसे जांचूं अगर कोई वस्तु NSMutableArray के किसी निश्चित सूचकांक में मौजूद है? माइग्रेट करना, लेकिन अभी भी 'आरएलएमईक्सेशन' पर क्रैश हो रहा है, कारण: 'माइग्रेशन आवश्यक है IOS8 में शीर्ष विंडो को कैसे अलग करना है? प्रकार के मूल्य को परिवर्तित नहीं किया जा सकता – स्विफ्ट शब्दकोश के साथ त्रुटि प्राप्त करना क्या मैं एक UIScrollView को अन्य UIScrollView के अंदर रख सकता हूँ फ्रेम.size.width और frame.width के बीच का अंतर स्ट्रिंग पार्सिंग को अनुकूलित करें उचित क्षेत्र उपयोग पैटर्न / सर्वोत्तम अभ्यास? फोनगैप पृष्ठ आईओएस डिवाइसों में कुंजीपटल उपस्थित होने के बाद स्क्रॉल करते हैं जो कि फोनगैप पृष्ठ को दूषित बनाता है एक वास्तविक 1-पिक्सेल लाइन, आईओएस 7 बनाएं नीला पुश सूचना केंद्र – आईओएस और एंड्रॉइड दोनों के लिए पेलोड प्रारूपों को कैसे संभालना है? जिम्मेदार UITextView कोरियाई प्रतीकों के साथ काम नहीं करता है

UITouch घटनाओं का अनुक्रम कैसे रद्द करें?

मेरे पास एक UIImage दृश्य है जो ईवेंट को स्पर्श करने का जवाब देता है मैं टच अनुक्रम को रद्द करना चाहता हूँ, यानी, स्पर्श करने के लिए और कॉलों को touchesMoved: , अगर स्पर्श कुछ सीमाओं के बाहर चला जाता है। मैं उसे कैसे कर सकता हूँ?

मुझे पता है कि touchesMoved: में touchesMoved: मैं टच ऑब्जेक्ट के निर्देशांक का निरीक्षण कर सकता हूं और इसे अनदेखा कर सकता हूं, लेकिन जो मुझे नहीं पता है कि यह क्रम पूरी तरह से कैसे रद्द कर सकता है। मुझे एप्पल डेवलपर UIResponder संदर्भ में प्रलेखित कोई भी तरीका दिखाई नहीं देता है कि मैं एक स्पर्श अनुक्रम को रद्द करने के लिए कॉल कर सकता हूं।

Solutions Collecting From Web of "UITouch घटनाओं का अनुक्रम कैसे रद्द करें?"

यह समाधान थोड़ा कूल्दी हो सकता है, लेकिन आप लागू कर सकते हैं और मैन्युअल रूप से कॉल कर सकते हैं

 - (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 

मैं एप्पल के आईफोन नमूना कोड साइट पर मूवमेंट मेमरी नमूना ऐप पर कुछ ट्विकिंग पर इस समाधान को ढीला बना रहा हूं जहां मैंने इस तरह से देखने के लिए touchesMoved बदल दिया था:

 - (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; if ([touch view] == placardView) CGPoint location = [touch locationInView:self]; placardView.center = location; // I added the following line: [self touchesCancelled:touches withEvent:event]; return; } 

आप [super touchesMoved:withEvent:] करने के लिए कॉल करने की ज़रूरत है [super touchesMoved:withEvent:] सुपर दृश्य को घटना से साफ करने के लिए, लेकिन अधिक महत्वपूर्ण बात, आपको [super touchesCancelled:withEvent:] कॉल करने की आवश्यकता नहीं है

जब मैंने एक स्वाइप का पता लगाया है, तो इसे चयनित होने से रखने के लिए मैंने एक सेल पर इसका उपयोग किया है:

 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if (!showingEdit) { if (IS_FAR_ENOUGH_TO_BE_A_SWIPE) { RESPOND_TO_SWIPE showingEdit = YES; [super touchesCancelled:touches withEvent:event]; } else { [super touchesMoved:touches withEvent:event]; } } } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (!showingEdit) { [super touchesEnded:touches withEvent:event]; } } 

अस्थायी सेटिंग को UIImageView की उपयोगकर्ता इंटरैक्शनइनेटेड प्रॉपर्टी को NO की कोशिश करें

मुझे हाल ही में एक ही समस्या का सामना करना पड़ा और इसे हल करने का एक मानक तरीका मिला। छूने देने से रोकने के लिए आप [[UIApplication साझा साझाकरण] शुरू करना भूलना इन्टरनैशिंगएवेंट्स] का उपयोग कर सकते हैंआपके संपूर्ण ऐप में जाने की घटनाएं जब आपको फिर से स्पर्श प्राप्त करने की आवश्यकता होती है, तो उन्हें [[UIApplication sharedApplication] endIgnoringInteractionEvents] का उपयोग करने के लिए सुनिश्चित करें

मुझे नहीं लगता कि यह संभव है क्योंकि मुझे यह प्रलेखित नहीं लगता है और इन समाधानों में से कोई भी काम नहीं करता है

यह कोड आपकी मदद करेगा मैं टच में टच इवेंट को अक्षम करता touchesMoved: विधि और मैं टच touchesCancelled: सक्षम करने में सक्षम हूं I

 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; ....... ....... Your code ....... ....... //Condition when you want to disable touch event [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; ....... ....... Your code ....... ....... } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [[UIApplication sharedApplication] endIgnoringInteractionEvents]; } 

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

मैं इस दृश्य को अपने पर्यवेक्षण से निकाल कर और इसे सीधे वापस जोड़कर प्राप्त करता हूं

 [view retain]; UIView *sv = view.superview; [view removeFromSuperview]; [sv addSubview:view]; [view release]; 

यह दृश्य को प्रत्युत्तर श्रृंखला को तोड़ता है इसलिए किसी भी शेष स्पर्श को दृश्य पर प्राप्त नहीं किया जाएगा। अगले स्पर्श अभी भी सामान्य के रूप में प्राप्त होगा।

IOS5 पर यूआईटीच में एक निजी पद्धति है

 -(void)setSentTouchesEnded:(BOOL)ended; 

सेब के कार्यान्वयन के आधार पर यह घटनाओं को भेजने को रोक सकता है

ऐसा करने का एक अन्य तरीका साहचर्य वस्तुओं का उपयोग होगा

 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if ([(NSNumber *)objc_getAssociatedObject(touch, &outKey) boolValue]) return; if (sometouchisoutsideofview) { objc_setAssociatedObject(touch, &outKey, [NSNumber numberWithBool:YES], OBJC_ASSOCIATION_RETAIN); } } 

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

अंत में इसे हल किया

  1. बुलेयन झंडा "निष्क्रिय" नामक सेट करें
  2. छुआ में, पहले यह जांचें कि स्पर्श वांछित दृश्य के अंदर है। यदि ऐसा नहीं है, तो अक्षम ध्वज को हाँ पर सेट करें
  3. अभी भी छुपी हुई हैं, अपनी कार्रवाई करने से पहले ध्वज की जांच करें इसलिए, इस बिंदु पर, यदि वे दृश्य के बाहर हैं, तो कुछ भी नहीं होगा।
  4. छूए गए अंत में, अक्षम ध्वज को NO में सेट करें इसलिए जब तक उपयोगकर्ता अपनी उंगली से लिफ्ट नहीं करता तब तक टच अनुक्रम को प्रभावी रूप से रोक दिया जाता है।

मुझे लगता है कि यह आपके लिए तब तक काम करेगा जब तक आपके पास विशिष्ट रूप से टच अनुक्रम को रद्द करने की ज़रूरत नहीं है

आप यूआईटीच के लिए श्रेणी बना सकते हैं आप घोषित कर सकते हैं

 @property (nonatomic,strong,readwrite) UIView *view; 

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

आप यह जांच सकते हैं कि, स्पर्श बिंदु स्थान सीजीआरएक्ट में हैं (यानी आपकी छवि दृश्य के आयत में हैं) या नहीं यदि वे उस रीक्ट में नहीं हैं, तो स्पर्श को रद्द कर दिया जाएगा।

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInView:self.view]; if (CGRectContainsPoint(myImageView, touchLocation)) { lastPoint = [touch locationInView: myImageView]; } NSLog(@"Last :%.2f - %.2f",lastPoint.x, lastPoint.y); } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint currentPoint; UITouch *touch = [touches anyObject]; CGPoint touchLocation = [touch locationInView:self.view]; if (CGRectContainsPoint(myImageView.frame, touchLocation)) { currentPoint = [touch locationInView: myImageView]; } }