2013-04-04 13 views
5

पर UIButton स्पर्श को रद्द करें मेरे पास UIScrollView के भीतर कुछ UIButtons हैं, लेकिन मैं बटन स्पर्श में देरी नहीं करना चाहता हूं। हालांकि, जैसे ही स्क्रॉल व्यू ड्रैग/स्क्रॉल का पता लगाता है, मैं UIButton स्पर्श को रद्द करना चाहता हूं और UIScrollView की स्क्रॉलिंग के साथ आगे बढ़ना चाहता हूं।आईओएस UIScrollView स्क्रॉल

मैं निम्नलिखित को शामिल किया है ...

_scrollView.delaysContentTouches = NO; 

... लेकिन (जाहिर है) बटन स्पर्श जब घसीटा रद्द नहीं करता। क्या किसी के पास कोई सुझाव है कि मैं इस कार्यक्षमता को कैसे कार्यान्वित कर सकता हूं?

उत्तर

7

आप UIScrollView की इस विधि को ओवरराइड कर सकते हैं।

-(BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
    return YES; 
} 

और आपके UIButton में, आपको विभिन्न नियंत्रण घटनाओं के लिए अलग-अलग विधि जोड़नी चाहिए।

  1. UIControlEventTouchDown के लिए हाइलाइट प्रभाव दिखाएं।
  2. UIControlEventTouchUpInside | UIControlEventTouchUpOutside के लिए ट्रिगर बटन;
  3. UIControlEventTouchCancel के लिए स्पष्ट हाइलाइट प्रभाव।
+1

को रद्द नहीं कर लेते हैं, तब तक आप बटन पर टैपिंग (मानक UIButton व्यवहार) से बहुत दूर दूर तक बटन पर टैप कर रहे हैं। धन्यवाद। – lucien

+0

UIControlEventTouchCancel एक अधिसूचना थी जिसे मैं याद कर रहा था और यह काम करता था। धन्यवाद! – cgossain

1

आप अधिसूचना को बंद करने के लिए scrollViewWillBeginDragging का उपयोग कर सकते हैं और बटन को अपने बटन के कोड में सुनकर रद्द कर सकते हैं। मुझे लगता है कि आप यही करने की कोशिश कर रहे हैं, लेकिन मुझे यकीन नहीं है कि क्या मैंने आपके प्रश्न को सही ढंग से समझा है।

+0

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

+0

आईओएस होम स्क्रीन पर इसे आज़माएं ... ऐप पर टैप करें, और आप देखेंगे कि यह अंधेरा हो गया है, लेकिन जैसे ही आप अपनी उंगली खींचते हैं, यह – lucien

+0

के बजाय स्पर्श और स्क्रॉल को रद्द करता है ताकि आप बटन को तुरंत बंद कर दें एक क्रिया लेकिन जब स्क्रॉल व्यू को रद्द करने के लिए खींचा जाता है? और एक बार जब आप एक बटन दबाते हैं, तो खींचें, scrollViewWillBeginDragging को कॉल नहीं किया जाता है? होमस्क्रीन के साथ अच्छा उदाहरण। – Psiticosis