के लिए अपना स्वयं का ईवेंट "प्रेषित ईवेंट" में जोड़ें, मैंने UIView का उप-वर्ग बनाया है और मैं इसे इंटरफ़ेस बिल्डर (वास्तव में Xcode4) में दिखाए गए कस्टम ईवेंट प्रकाशित करना चाहता हूं जिस तरह से यूआईबटन की तरह नियंत्रण होता है, जब आप एक्सकोड 4 डिजाइनर में नियंत्रण पर राइट क्लिक करते हैं तो "भेजे गए ईवेंट" क्षेत्र में ईवेंट का एक समूह होता है। मुझे पता है कि मैं कुछ कस्टम चीजें होने पर वस्तुओं को अपने कस्टम व्यू का उपयोग करने के लिए डिलीगेशन (प्रोटोकॉल के माध्यम से) या अधिसूचना (यूआईएनओटीफिकेशन सेंटर के माध्यम से) का उपयोग कर सकता हूं, लेकिन मैं जानना चाहूंगा कि "लक्ष्य-क्रिया तंत्र" (जिसमें वर्णित है) कोको फंडामेंटल गाइड) एक्सकोड डिजाइनर के साथ उपयोग करने और एकीकृत करने के लिए उचित/वांछनीय/संभव है। ज्यादातर .NET पृष्ठभूमि से आ रहा है, यह दृष्टिकोण .NET ईवेंट मॉडल से निकटता से संबंधित प्रतीत होता है और मुझे सबसे अधिक समझ में आता है।इंटरफ़ेस बिल्डर मेनू में अपने स्वयं के कस्टम UIView
उत्तर
UIControlEventApplicationReserved है, जो आपको इवेंट पहचानकर्ताओं की एक श्रृंखला देता है जो आपका ऐप उपयोग कर सकता है। हालांकि, मुझे नहीं लगता कि इंटरफ़ेस बिल्डर को एप्लिकेशन-परिभाषित घटनाओं के बारे में बताने का कोई तरीका है, इसलिए आपको आईआईसीओन्ट्रोल की मानक घटनाओं के लिए आईबी में अपनी घटनाओं के लिए समान समर्थन नहीं मिलेगा। इसके बजाय, आपको कोड में प्रत्येक ऐप-परिभाषित ईवेंट के लिए लक्ष्य और कार्रवाई निर्दिष्ट करनी होगी। (कृपया, अगर मैं इस बिंदु पर गलत हूं तो कोई मुझे सही करेगा।) यह बिल्कुल मुश्किल नहीं है, लेकिन यह थोड़ा अलग है।
ऐसा करने का एक आसान तरीका के बजाय UIControl
का विस्तार करना है, यह आपको सभी डिफ़ॉल्ट घटनाओं (UIButton
आदि के रूप में) को लक्षित करने की अनुमति देगा।
नोट: मेरे कस्टम UIControl
के लिए घटनाओं को संभालने के लिए मैंने इसके शीर्ष पर रखे गए नियंत्रणों के विपरीत मुझे यह सुनिश्चित करना था कि userInteractionEnabled = NO
सभी स्तरित नियंत्रणों पर सेट किया गया था।
आप इसे आईबीओटलेट कोलेक्शन का उपयोग करके कर सकते हैं। इस दृष्टिकोण का लाभ यह है कि आप इंटरफ़ेस बिल्डर में ऑब्जेक्ट्स को लिंक कर सकते हैं। नकारात्मकता यह है कि आप सीधे आईबीएक्शन (जैसे यूआईसींट्रोल) से लिंक नहीं कर सकते हैं। यहाँ एक साफ एक प्रोटोकॉल का उपयोग कर दिया गया है:
ObserverProtocol.h
@protocol ObserverProtocol <NSObject>
- (void)observedObjectChanged:(id)sender;
@end
MyObject.h
@interface MyObject : NSObject
{
@private
IBOutletCollection(id<ObserverProtocol>) NSArray *observers;
}
- (void)objectChanged;
MyObject.m
@implementation MyObject
- (void)objectChanged
{
for (id<ObserverProtocol> observer in observers)
{
if ([observer respondsToSelector:@selector(observedObjectChanged:)])
{
[observer observedObjectChanged:self];
}
}
}
@end
तो फिर तुम सिर्फ ObserverProtocol लागू करने की आवश्यकता कक्षाओं में आप घटना का निरीक्षण करना चाहते हैं (और पाठ्यक्रम के इंटरफ़ेस बिल्डर में बाध्यकारी करने के लिए)।
- 1. इंटरफ़ेस बिल्डर
- 2. कस्टम UIView
- 3. इंटरफ़ेस बिल्डर
- 4. इंटरफ़ेस बिल्डर
- 5. इंटरफ़ेस बिल्डर में तत्काल कस्टम UIView को प्रारंभ करने के लिए कहां?
- 6. इंटरफ़ेस बिल्डर
- 7. इंटरफ़ेस बिल्डर
- 8. इंटरफ़ेस बिल्डर में UIView आकार को कैसे बदलें
- 9. इंटरफ़ेस बिल्डर
- 10. इंटरफ़ेस बिल्डर
- 11. इंटरफ़ेस बिल्डर के साथ UIView पृष्ठभूमि ग्रेडियेंट देखें
- 12. अपने स्वयं के
- 13. इंटरफ़ेस बिल्डर
- 14. इंटरफ़ेस बिल्डर
- 15. UITableView इंटरफ़ेस बिल्डर
- 16. क्या आप इंटरफ़ेस बिल्डर
- 17. इंटरफ़ेस बिल्डर में अज्ञात वर्ग ZBarReaderView फ़ाइल
- 18. इंटरफ़ेस बिल्डर
- 19. इंटरफ़ेस बिल्डर:
- 20. इंटरफ़ेस बिल्डर
- 21. इंटरफ़ेस बिल्डर
- 22. इंटरफ़ेस बिल्डर
- 23. इंटरफ़ेस बिल्डर
- 24. इंटरफ़ेस बिल्डर
- 25. अपने स्वयं के फ़ाइल
- 26. मैं इंटरफ़ेस बिल्डर में कस्टम ऑब्जेक्ट कैसे जोड़ सकता हूं?
- 27. इंटरफ़ेस बिल्डर
- 28. इंटरफ़ेस बिल्डर में विंडो पर कस्टम दृश्य खींचें?
- 29. इंटरफ़ेस बिल्डर: एनआईबी
- 30. इंटरफ़ेस बिल्डर (एक्सकोड 4)
आह, ठीक है। "लक्ष्य" प्रदान करने के लिए केवल एक प्रतिनिधि स्थापित करने से बहुत गड़बड़ लगती है, हालांकि मुझे लगता है कि मैं अपने कस्टम UIView को एनएसओब्जेक्ट के रूप में (संपत्ति या विधि के माध्यम से) ले सकता हूं, इसलिए मेरे विचार में हेडर शामिल नहीं होंगे उन ऑब्जेक्ट्स के लिए जो ऐप पदानुक्रम में ऊपर बैठते हैं और कसकर युग्मित होते हैं। मेरा अनुमान है कि डिजाइनर में कनेक्शन करते समय ऐसा होता है, इसलिए शायद यह वही बात है। ऐसा लगता है कि मानक या शायद, पसंदीदा तरीका केवल प्रतिनिधिमंडल का उपयोग करना है। मुझे उपर्युक्त "लक्ष्य-क्रिया तंत्र" पर अधिक जानकारी नहीं मिली। – dreyln
वे बहुत समान विचार हैं। एक व्यू कंट्रोलर अक्सर विचारों और नियंत्रणों के लिए लक्ष्य और/या प्रतिनिधि होता है जो यह प्रबंधित करता है। उस स्थिति में, यह केवल 'स्वयं' को लक्ष्य के रूप में पारित करेगा और इसके चयनकर्ताओं में से एक को 'कॉल-टार्गेट: एक्शन: फॉर कंट्रोल इवेंट्स' के लिए कॉल में कार्रवाई के रूप में पास किया जाएगा। – Caleb