2013-04-09 6 views
5

मेरे पास एक स्थिर NSTextField है जो मेरे ओएस एक्स ऐप में एक बड़ा त्रुटि संदेश ओवरले करता है। मैं इसे उपयोगकर्ता के नीचे नियंत्रण क्लिक करने की अनुमति देने के लिए इसे प्राप्त करने की कोशिश कर रहा हूं।NSTextField क्लिक-थ्रू?

आईबी में मैं अनियंत्रित "सक्षम" है और मैं देख लिया है "इनकार प्रथम प्रत्युत्तर"

मैं इसलिए भी कि जो काम नहीं कर रहा था कोड में यह किया है:

[largeErrorText setEnabled:NO]; 
[largeErrorText setRefusesFirstResponder:YES]; 

फिर भी , यह नीचे वस्तुओं के साथ बातचीत करने के रास्ते में हो रहा है। कोई विचार यह और क्या हो सकता है?

+0

के संभावित डुप्लिकेट [एक कस्टम दृश्य में उपयोगकर्ता बातचीत को अक्षम कैसे करें] (http://stackoverflow.com/questions/11740638/how-to-disable-user-interaction-in-a-custom-view) –

+0

@ गैब्रिएल पेट्रोनेला: इस प्रश्न के साथ उस – NSGod

+0

के साथ कुछ लेना देना नहीं है, यह बातचीत को अक्षम करने के बारे में है, नहीं? –

उत्तर

0

मैं आपको निम्न चित्र की तरह एक परिदृश्य का वर्णन कर रहे हैं मान दिखाता है:

enter image description here

भीतरी लाल आयत NSTextField लेबल के फ्रेम रूपरेखा है, और आप कह रहे हैं कि भले ही आपने टेक्स्ट फ़ील्ड को अक्षम कर दिया गया है और सेट पहले उत्तरदाता को मना कर देता है, आपके क्लिक NSButton पर नहीं जाते हैं?

यह डिज़ाइन परिदृश्य "ओवरलैपिंग भाई विचार" नामक एक शर्त का वर्णन करता है। यदि संभव हो तो मैं आम तौर पर इससे बचने की कोशिश करता हूं। यदि आप नहीं कर सकते हैं, तो आप यह सुनिश्चित करके वांछित व्यवहार प्राप्त कर सकते हैं कि NSTextField लेबल अन्य सभी UI ऑब्जेक्ट्स "पीछे" है जो आप बातचीत करने में सक्षम होना चाहते हैं। आप लेबल का चयन करके और संपादक> व्यवस्थित> वापस भेजें चुनकर ऐसा कर सकते हैं। यह आश्वस्त करेगा कि बटन टेक्स्ट फ़ील्ड के सामने है ताकि यह माउस ईवेंट को सही तरीके से रोक सके।

+0

ग्रेट टिप्पणी, लेकिन सवाल का जवाब नहीं है। धन्यवाद। –

19

क्लिक करने के लिए एक ऑब्जेक्ट पारदर्शी बनाने का एकमात्र तरीका उस ऑब्जेक्ट को उपclass करना है (आपके मामले में NSTextField) और हिटटेस्ट विधि को वापस करने के लिए ओवरराइड करें। इस तरह से NSTextField क्लिक का जवाब नहीं देगा, इसलिए नीचे एनएसवी व्यू क्लिक का जवाब देगा।

- (NSView*)hitTest:(NSPoint)aPoint 
{ 
    return nil; 
} 
संबंधित मुद्दे