यदि आप सिर्फ यह पता लगाना चाहते हैं कि टेक्स्ट फ़ील्ड का मूल्य बदल गया है, तो आप प्रतिनिधि विधि का उपयोग कर सकते हैं जो NSTextField
NSControl
से विरासत प्राप्त करता है।
बस अपने नियंत्रक वर्ग के लिए निब फ़ाइल में NSTextField
की delegate
आउटलेट कनेक्ट करते हैं, और कुछ इस तरह लागू:
- (void)controlTextDidChange:(NSNotification *)notification {
NSTextField *textField = [notification object];
NSLog(@"controlTextDidChange: stringValue == %@", [textField stringValue]);
}
आप NSTextField
प्रोग्राम के रूप में बना रहे हैं, तो आप उपयोग कर सकते हैं NSTextField
के setDelegate:
NSTextField *textField = [[[NSTextField alloc] initWithFrame:someRect] autorelease];
[textField setDelegate:self]; // or whatever object you want
प्रतिनिधिमंडल कोको भर में इस्तेमाल मौलिक डिजाइन पैटर्न में से एक है: निर्माण के बाद विधि प्रतिनिधि निर्दिष्ट करने के लिए। संक्षेप में, यह आपको उस अतिरिक्त व्यवहार को जोड़ने के लिए ऑब्जेक्ट को उप-वर्ग में शामिल जटिलता के बिना मानक ऑब्जेक्ट्स (इस मामले में, उपयोगकर्ता इंटरफ़ेस ऑब्जेक्ट्स) के व्यवहार को आसानी से अनुकूलित करने की अनुमति देता है। उदाहरण के लिए, टेक्स्टफील्ड में टेक्स्ट बदलने पर एक और निम्न-स्तरीय तरीका यह हो सकता है कि आप अपना खुद का कस्टम NSTextField
सबक्लास बना सकते हैं जिसमें keyDown:
विधि NSResponder
से विरासत को ओवरराइड कर सकती है। हालांकि, इस तरह के उपclassing मुश्किल है क्योंकि यह आवश्यक है कि आप वस्तु के विरासत पदानुक्रम का एक अंतरंग ज्ञान है। अधिक जानकारी के लिए, निश्चित रूप से बाहर की जाँच करें:
Cocoa Fundamentals Guide: Delegates and Data Sources
के बारे में क्या id <NSTextFieldDelegate>
का अर्थ है: यह एक सामान्य वस्तु (id
) कि <NSTextFieldDelegate>
प्रोटोकॉल के अनुरूप के रूप में घोषित किया है। प्रोटोकॉल पर अधिक जानकारी के लिए, The Objective-C Programming Language: Protocols देखें।
नमूना GitHub परियोजना पर: https://github.com/NSGod/MDControlTextDidChange
आप स्पष्ट कर सकते हैं तो आपको सूचित किया करने के लिए देख रहे हैं कि क्या जब पाठ फ़ील्ड के stringValue परिवर्तन, या जब के साथ जुड़ा हुआ जवाब सौदों के रूप में चयनित पाठ में परिवर्तन ()? – NSGod