iphone - UILabel में हैंडलिंग टच इवेंट और इसे आईबीएक्शन तक जोड़ना




interface-builder touch-event (3)

ठीक है, तो मेरे पास इंटरफ़ेस बिल्डर में बनाया गया UILabel जो कुछ "प्रारंभ करने के लिए टैप" का कुछ डिफ़ॉल्ट टेक्स्ट प्रदर्शित करता है।

जब उपयोगकर्ता UILabel टैप करता है तो मैं इसे एक आईबीएक्शन विधि ट्रिगर करना चाहता हूं: -(IBAction)next; जो कुछ नया कहने के लिए लेबल पर पाठ को अद्यतन करता है।
यह वास्तव में सुविधाजनक होगा अगर यह मुझे मेरी विधि से मेरे लेबल से कनेक्शन खींचने की अनुमति देता है और फिर बटन के साथ अंदर स्पर्श करें का चयन करें। लेकिन हां, कोई सिगार नहीं।

तो वैसे भी, मुझे लगता है कि मेरा सवाल है, क्या मुझे यह काम करने के लिए UILabel को उप-वर्ग करना होगा? या क्या कोई तरीका है कि मैं लेबल पर एक बटन खींच सकता हूं, लेकिन इसे 0% अपारदर्शी बना सकता हूं। या क्या कोई आसान समाधान है जो मुझे याद आ रहा है?


UILabel UIView से विरासत में मिलता है जो यूरीस्पॉन्डर से विरासत में मिलता है। सभी यूआई संवाददाता वस्तुएं स्पर्श घटनाओं को संभाल सकती हैं। तो आपकी कक्षा फ़ाइल में जो आपके दृश्य के बारे में जानता है (जिसमें UIlabel शामिल है) लागू करें:

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

इंटरफ़ेस बिल्डर में UILabel के टैग मान सेट करें। जब आपके स्पर्श में स्पर्श होता है तोगन विधि, उस दृश्य के टैग मान को चेक करें जिसमें टैग संबंधित है:

UITouch *touch = [touches anyObject];

if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";

आप अपने कोड फ़ाइल को यूआईएलएबल ऑब्जेक्ट वैरिएबल को आईबीओलेटलेट उपसर्ग के साथ घोषित करके इंटरफ़ेस बिल्डर में UILabel ऑब्जेक्ट के साथ अपनी क्लास फ़ाइल में कनेक्ट करते हैं:

IBOutlet UILabel *label;

फिर इंटरफेस बिल्डर में आप उन्हें जोड़ सकते हैं।


आप यूआईबटन का उपयोग कर सकते हैं, इसे बिना किसी छवि के पारदर्शी, यानी कस्टम प्रकार बना सकते हैं, और उस पर एक UILabel जोड़ें (केंद्रित)। फिर सामान्य बटन घटनाओं को तार।


स्विफ्ट 3

आपके पास आईबीओलेट है

@IBOutlet var label: UILabel!

जिसमें आप उपयोगकर्ता इंटरैक्शन को सक्षम करते हैं और एक इशारा पहचानकर्ता जोड़ते हैं

label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)

और अंत में, टैप को संभालें

func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
  // Your code goes here
}




touch-event