के अंदर एक कस्टम NSTextField में मेरे पास व्यू-आधारित NSTableView
है। तालिका में प्रत्येक दृश्य में एक कस्टम टेक्स्ट फ़ील्ड है।माउसडाउन: एक NSTableView
जब उपयोगकर्ता तालिका के दृश्य के अंदर टेक्स्ट फ़ील्ड (लेबल) पर क्लिक करता है तो एक क्रिया को आग लगाना चाहती है (कल्पना करें कि प्रत्येक तालिका कक्ष में एक कस्टम कार्रवाई के साथ हाइपरलिंक हो)।
मैंने माउस ईवेंट को पकड़ने के लिए एक मूल NSTextField
सबक्लास बनाया है। हालांकि, वे केवल दूसरे क्लिक पर आग लगते हैं, न कि पहले क्लिक पर।
मैंने NSButton
का उपयोग करने की कोशिश की और वह तुरंत आग लग गई।
यहाँ कस्टम लेबल के लिए कोड है:
@implementation HyperlinkTextField
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"link mouse down");
}
- (void)mouseUp:(NSEvent *)theEvent {
NSLog(@"link mouse up");
}
- (BOOL)acceptsFirstResponder {
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
return YES;
}
@end
धन्यवाद, मैं कोशिश करूँगा। एक सवाल: पहला क्लिक एनएसबटन के साथ काम करता है (तालिका पंक्ति उस मामले में नहीं चुनी जाती है)। क्या उस व्यवहार का अनुकरण करने का कोई तरीका है? – Mark
शायद वहां है, लेकिन मुझे यह नहीं पता। मैंने सोचा होगा कि स्वीकार करने के लिए हाँ वापस लौटना फर्स्टमाउस और/या स्वीकार करता है फर्स्ट रेस्पॉन्डर ने ऐसा किया होगा। – rdelmar
यदि आप एक बटन के साथ प्राप्त व्यवहार चाहते हैं, तो बस एक बटन का उपयोग क्यों न करें? आप सीमा को बंद कर सकते हैं, और यह वैसे भी एक सीमा रहित लेबल की तरह दिखता है। यदि आप सीमा चाहते हैं, तो आप एनएसबीओक्स में एक सीमा रहित बटन एम्बेड कर सकते हैं। – rdelmar