@Rob से जवाब संभवतः एक बिंदु पर काम किया, लेकिन @Daniel संख्या के रूप में टेड, यह अब और काम नहीं करता है। ऐसा लगता है जैसे कोको माउस को ट्रैक करना चाहता है और एक क्लिक के जवाब में चयन खींचना चाहता है, और becomeFirstResponder
के जवाब में टेक्स्ट का चयन करने का प्रयास करना इसके साथ अच्छा नहीं खेलता है।
उस ट्रैकिंग को रोकने के लिए माउस ईवेंट को अवरुद्ध करने की आवश्यकता है। , जहाँ तक मेरा बता सकते हैं
@interface MyAutoselectTextField : NSTextField
@end
@implementation MyAutoselectTextField
- (void)mouseDown:(NSEvent *)theEvent
{
[[self currentEditor] selectAll:nil];
}
@end
समय mouseDown:
से बुलाया जाता है क्षेत्र संपादक पहले से ही स्थापित किया गया है: अधिक या परीक्षण और त्रुटि से कम, मैं एक समाधान है जो ओएस एक्स 10.10 पर काम करने लगता है मिल गया है ऊपर, शायद becomeFirstResponder
के दुष्प्रभाव के रूप में। कॉलिंग selectAll:
फिर फ़ील्ड एडिटर की सामग्री का चयन करता है। पर self
पर कॉल करना इसके बजाय अच्छी तरह से काम नहीं करता है, संभवतया फ़ील्ड एडिटर स्थापित है।ध्यान दें कि mouseDown:
का ओवरराइड कॉल super
पर है; super
एक ट्रैकिंग लूप चलाएगा जो चयन को खींच लेगा, और हम उस व्यवहार को नहीं चाहते हैं। ध्यान दें कि टेक्स्टफील्ड पहले प्रतिक्रियाकर्ता बनने के बाद यह mouseDown:
ओवरराइड चयन को प्रभावित नहीं करता है, क्योंकि उस समय यह क्षेत्र संपादक का mouseDown:
है जिसे कॉल किया जा रहा है।
मुझे नहीं पता कि ओएस एक्स संस्करणों की यह श्रृंखला किस प्रकार काम करती है; यदि आप परवाह करते हैं, तो आपको इसका परीक्षण करने की आवश्यकता होगी। दुर्भाग्यवश, NSTextField
के साथ काम करना हमेशा थोड़ा नाजुक होता है क्योंकि फ़ील्ड संपादक काम करने का तरीका बहुत अजीब है और super
में कार्यान्वयन विवरण पर निर्भर है।
बहुत बहुत शुक्रिया, यह खूबसूरती से काम किया और मुझे कुछ चीजें सीखने बना दिया। #import <कोको/Cocoa.h> @interface MCTextField: मैं कोड आपके द्वारा दी गई है, तो जैसे ज फ़ाइल से मीटर बना लिया, तो NSTextField {} @end और इंटरफ़ेस बिल्डर में मैं फ़ाइल -> कक्षा फ़ाइल पढ़ें, MCTextField.h का चयन किया, फिर मैंने अपने टेक्स्ट फ़ील्ड की कक्षा को MCTextField होने के लिए बदल दिया। –
यह बहुत सामान्य "प्रोग्रामेटिक रूप से टेक्स्ट का चयन करें" के लिए समाधान भी है - उदाहरण के लिए, NSTextView में टेक्स्ट-सिलेक्ट रूटीन, कई मौकों पर सीधे डाले जाने पर सही ढंग से आग नहीं लगाते हैं, तो आपको उन्हें एक प्रदर्शन चयनकर्ता में रखना होगा : बाद में: 0 कॉल। Sigh – Adam
यह 10.9 एसडीके में अच्छी तरह से काम नहीं करता है। जब मैं फ़ील्ड पर क्लिक करता हूं, तो मुझे एक झपकी वाली देखभाल मिलती है जब तक कि मैं 1 सेकंड की तरह बहुत देर से देरी नहीं करता। –