2010-04-27 16 views
26

असल में मेरे पास एक कस्टम UIButton है और इस कस्टम बटन में सबव्यूव हैं। अगर मैं उन सबव्यूव को अपने UIButton में जोड़ता हूं, तो बटन ईवेंट परिवर्तनों का जवाब देना बंद कर देता है। I. अगर मैं उस पर टैप करता हूं तो यह चयनकर्ता का जवाब नहीं देता है। मेरे पास सब कुछ userInteractionEnabled के रूप में सेट है। मैंने टचबेगन जोड़ने की भी कोशिश की और यह काम कर रहा है। अगर मैं उन सबव्यूव को हटा देता हूं, तो यूआईबटन फिर से काम करता है।कस्टम UIButton + subviews = कोई ईवेंट

मैं बटन से टैप ईवेंट कैसे प्राप्त करूं?

उत्तर

56

सबव्यू में userInteractionEnabledNO पर सेट होना चाहिए। यहां क्या हो रहा है कि उप-दृश्य UIButton की बजाय स्पर्श ईवेंट प्राप्त कर रहे हैं। यदि यह कोई अन्य विकल्प नहीं काम करता है तो अपने कस्टम UIButton में hitTest:withEvent: को ओवरराइड करना है ताकि वह हमेशा स्वयं लौट सके और यदि वे ईवेंट को संभालना चाहते हैं तो इसके सबव्यूव्स नहीं पूछते हैं। अधिक जानकारी के लिए UIView docs देखें।

+0

बहुत बहुत धन्यवाद। आप सही थे, मुझे सक्षम होने के रूप में userinteraction नहीं होना चाहिए। – user281300

+0

धन्यवाद! उत्कृष्ट समाधान –

+0

मैं यह नहीं बता सकता कि * कितनी बार * इसने मुझे बोर्क किया है। मैं सोचता रहता हूं कि इसे उलट दिया जाना चाहिए। मैं अब एक एच्च-ए-स्केच के साथ खेलना चाहता हूं। –