2012-07-13 11 views
9

के पीछे एनएसवी व्यू पर क्लिक करने के लिए कैसे अक्षम करें मेरे पास एक दूसरे के शीर्ष पर दो एनएसवी व्यू हैं। एक एनएसवी व्यू पंक्तियों के साथ एक टेबल प्रस्तुत करता है। एक पंक्ति पर क्लिक करने पर उस दृश्य के शीर्ष पर एक और दृश्य दिखाया गया है।किसी अन्य NSView

अब समस्या यह है कि जब मैं दूसरे दृश्य पर किसी क्षेत्र पर क्लिक करता हूं जहां NSView के नीचे एक पंक्ति होती है तो यह क्लिक हो जाती है। मैं इसे कैसे रोक सकता हूं?

धन्यवाद

उत्तर

-8

आप जब यह प्रस्तुत किया है शीर्ष दृश्य में स्पर्श और माउस की घटनाओं को सक्षम कर सकते हैं:

topView.acceptsTouchEvents = YES; 
topView.acceptsFirstMouse = YES; 

संपादित करें: टिप्पणी सही है कि acceptsFirstMouse एक संपत्ति नहीं है, और चाहिए एक उपclass में अद्यतन किया जाना चाहिए।

+0

मैंने अभी कोशिश की और यह काम नहीं किया। मैं NSView पर फर्स्टमाउस संपत्ति स्वीकार नहीं कर सका। – Leo

+2

@ पीटर डीवेज़, ऐसा लगता है कि आपको 'AcceptsFirstMouse' में YES को उपclass और वापस करना होगा क्योंकि यह NSView की संपत्ति नहीं है। – CodaFi

+0

इस चाप के बारे में कोई जानकारी नहीं है लेकिन मैंने डिजाइन को बदलकर मेरी समस्या हल की है। धन्यवाद – Leo

0

सबक्लास और दृश्य में acceptsFirstMouse लागू करें, YES लौटाएं। साथ ही, उस दृश्य में acceptsTouchEvents से YES सेट करें।

+0

मेरे लिए काम नहीं करता है – zic10

3

अपने शीर्ष स्तर के दृश्य पर, उस दृश्य में mouseDown: लागू करें और अगला रेस्पॉन्डर को कॉल न करें या इसमें कुछ भी न करें।

- (void)mouseDown:(NSEvent *)theEvent{ 
    //Do nothing to not propagate the click event to descendant views 
} 

मेरे पास ओपी के समान सटीक परिदृश्य है और यह मेरे लिए इरादे के रूप में काम कर रहा है। उत्तर में क्रेडिट मुझे here मिला जो मुझे इस के लिए प्रेरित किया।