2013-02-08 44 views
6

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

मैंने बटन.एनेबल और userInteractionEnabled का उपयोग करने का प्रयास किया है, लेकिन कोई भी फ्लाई पर काम नहीं करता है। स्पर्श शुरू होने से पहले दोनों को सेट करना होगा।

क्या मैं बटन को तब तक विफल कर सकता हूं जब इसे स्पर्श किया जा रहा है?

+0

क्या आप पृष्ठभूमि प्रक्रिया या बटन से जुड़े सीधे आउटलेट को रद्द करने का प्रयास कर रहे हैं? – Bartu

उत्तर

0

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

+0

लेकिन बटन को पहले से दबाए जाने के बाद मैं स्पर्श कैसे रद्द कर सकता हूं? एक बूल के साथ मैं स्पर्श करने से कुछ भी कर सकता हूं लेकिन यह अभी भी दिखाएगा कि इसे छुआ जा रहा है। – daveMac

0

सुनिश्चित नहीं हैं कि में अंतिम रूप निष्क्रिय करने के लिए है userinteractionenabled लेकिन आप की तरह बहाना नीचे

[button addTarget:self 
        action:@selector(onTouchUpInside:) 
      forControlEvents:(UIControlEventTouchUpInside)]; 

[button addTarget:self 
        action:@selector(onTouchDown:) 
      forControlEvents:(UIControlEventTouchDown)]; 

[button addTarget:self 
        action:@selector(onTouchUpOutside:) 
      forControlEvents:(UIControlEventTouchUpOutside)]; 

कृपया मुझे अगर यह उपयोगी नहीं है या आप क्या कर रहे हैं नियंत्रण घटना पर आधारित differant कार्रवाई हो सकती है खोज रहे हैं

+0

मैं प्रयास की सराहना करता हूं, लेकिन मुझे यकीन नहीं है कि मैं यही कर रहा हूं। – daveMac

2

अपनी समस्या को हल करने के लिए आप एक चीज कर सकते हैं अपनी आवश्यकताओं के लिए बटन की दबाई गई उपस्थिति को अनुकूलित करना है। उपयोग: – setBackgroundImage:@"NormalStateImage.png" forState: UIControlStateNormal – setBackgroundImage:@"HighlightedStateImage.png" forState: UIControlStateHighlighted

नहीं

+0

यह मेरा वर्तमान कामकाज है, लेकिन ऐसा लगता है कि मुझे किसी भी तरह से स्पर्श रद्द करने में सक्षम होना चाहिए। – daveMac

+0

आप स्पर्श को रद्द करने में सक्षम हैं। लेकिन आपको उन्हें अलग-अलग संभालना होगा। आपको 'यूआईरस्पॉन्डर' के टच इवेंट्स को प्रतिसाद देने के लिए लागू करना होगा। इस ऐप्पल दस्तावेज़ की जांच करें http://developer.apple.com/library/ios/#documentation/uikit/reference/UIResponder_Class/Reference/Reference.html और यह ट्यूटोरियल http://mobile.tutsplus.com/tutorials/iphone/ios -क्विक-टिप-डिटेक्टिंग-टच/ – Luke

+0

हिटटेस्ट की तरह कुछ आसान नहीं होगा? – daveMac

6

आप अपने बटन के लिए दो कार्यों, नीचे स्पर्श के लिए एक और स्पर्श अप के लिए एक रजिस्टर करने की आवश्यकता करने के लिए नहीं और adjustsImageWhenDisabled संपत्ति के लिए संपत्ति adjustsImageWhenHighlighted निर्धारित किया है। संपर्क में आप तय कर सकते हैं कि क्या आप रद्द करना चाहते हैं और स्पर्श में बटन प्रेस के लिए वास्तविक तर्क लिखना चाहते हैं।

[button addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; 

- (IBAction)touchDown:(id)sender 
{ 
    UIButton *b = (UIButton*)sender; 

    // Call this if you wish to cancel the event tracking 
    [b cancelTrackingWithEvent:nil]; 
} 
1

यह किसी भी UIButton के लिए किया जा सकता है। आप समय उपयोगकर्ता उस पर नीचे छू लेती है पर बटन दबाएँ रद्द करना चाहते हैं, तो निम्न चरणों काम करना चाहिए:

  1. घटनाओं जहां रद्द करने की जांच आवश्यक है के लिए हैंडलर सेट करें। इस मामले में, जब बटन नीचे है।

    [yourButton addTarget: self action: @selector (buttonIsDownHandler :) forControlEvents: UIControlEventTouchDown];

  2. हैंडलर में, तय प्रेस रद्द करने के लिए है कि क्या

    - (IBAction) buttonIsDownHandler: (आईडी) इस { अगर (needToCancelThisPress) { [yourButton cancelTrackingWithEvent: शून्य]; } }

  3. UIControlEventTouchCancel के लिए बटन के हैंडलर रद्द होने के बाद बुलाया जाएगा।

बटन स्पर्श रद्दीकरण किसी भी समय किया जा सकता है। उदाहरण के लिए, यदि आप ट्रैक करना चाहते हैं कि जब उपयोगकर्ता बहुत लंबे समय तक दबाता है और रखता है, तो आप UIControlEventTouchDown हैंडलर में टाइमर शुरू कर सकते हैं, और फिर टाइमर की समयसीमा समाप्त होने पर स्पर्श को रद्द कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^