NSTextFieldCell
inherits (अच्छी तरह से, NSActionCell
जो NSCell
से विरासत से तकनीकी रूप से)। NSCell
वर्ग (docs से) करने के लिए प्रयोग किया जाता है:
NSCell वर्ग एक पूर्ण NSView उपवर्ग की भूमि के ऊपर के बिना एक NSView वस्तु में पाठ या छवियों को प्रदर्शित करने के लिए एक तंत्र प्रदान करता है।
विशेष रूप से, सेल वर्ग के लिए "पाठ या छवियों को प्रदर्शित", और उपयोगकर्ता के साथ बातचीत के साथ काम नहीं किया जाता है। इसी प्रकार, NSTextField
वर्ग के साथ:
एनएसटीक्स्टफाल्ड क्लास अपने उपयोगकर्ता इंटरफ़ेस को लागू करने के लिए NSTextFieldCell क्लास का उपयोग करता है।
वास्तविक उपयोगकर्ता इनपुट के साथ NSTextField
सौदों, पाठ क्षेत्र सेल का उपयोग बस अपने यूजर इंटरफेस को लागू करने, और इसी प्रकार, प्रतिनिधि तरीकों अधिसूचना जब पाठ का संपादन NSTextField
वर्ग के माध्यम से प्रदान की जाती है समाप्त हो गया है प्रदान करने के लिए, जबकि और NSTextFieldCell
कक्षा के माध्यम से नहीं।
आप जब संपादन एक NSTableView
में समाप्त होता है की सूचना प्राप्त करना चाहते हैं, तो आप के एक पर्यवेक्षक के रूप में अपने आप को रजिस्टर करने की आवश्यकता NSTextDidEndEditingNotification
(आप NSNotificationCenter वर्ग संदर्भ पढ़ने के लिए अगर आप अधिसूचना के साथ अपरिचित हैं चाहते हो सकता है)। ऐसा करने के लिए, निम्नलिखित को अपने नियंत्रक वर्ग में रखें;
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(textDidEndEditing:)
name:NSTextDidEndEditingNotification
object:tableView];
tableView
जहाँ आपके NSTableView
वस्तु के लिए सूचक है: awakeFromNib
समारोह इसे शामिल करने के लिए सुनिश्चित करें कि आपके एप्लिकेशन के स्टार्टअप आह्वान किया जाता है एक अच्छी जगह है। फिर, बस विधि इस प्रकार लागू:
- (void)textDidEndEditing:(NSNotification *)aNotification
{
// Do what you want here
}
मत भूलना आवंटन रद्द करने पर एक पर्यवेक्षक के रूप में अपने आप को दूर करने के लिए:
- (void)dealloc
{
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc removeObserver:self];
}
कारण यह है कि आप उद्देश्य यह है कि आप होने के लिए देख रहे हैं सेट NSTableView
उदाहरण (और सेल स्वयं नहीं) यह है कि हुड के नीचे, जब आप तालिका में एक सेल संपादित करते हैं, तो जिस सेल से आप काम कर रहे हैं उसे सीधे संपादित नहीं किया जा रहा है; यह खिड़की (या एक कस्टम) क्षेत्र संपादक है। संपादन समाप्त होने पर, फ़ील्ड एडिटर तब उस सेल के लिए टेबल व्यू पर नया मान पास करता है। हालांकि तालिका दृश्य यह कहने के लिए अधिसूचना पोस्ट करेगा कि एक सेल संपादित किया जा चुका है।
मैंने पाया कि "TextDidEndEditing:" विधि काम करती है, लेकिन "TextDidBegin संपादन:" विधि नहीं। क्या तुम्हारे पास कोई विचार है? – Yun