2010-11-03 12 views
15

न दिखाएं मेरे पास एक NSSplitView (कोई UISplitView (नियंत्रक) !!) तीन सबव्यू के साथ है। अब, अंतिम विभक्त (इंडेक्स 1) के लिए, मैं चाहता हूं कि विभाजक ड्रैगिंग कर्सर (दो तीर एक दूसरे से बाहर इंगित नहीं) दिखाए। मैं इस खींचने को रोकने के लिए है, लेकिन कर्सर अभी भी दिखा रहा है:एक NSSplitView के डिवाइडर को अपरिवर्तनीय बनाएं और ड्रैगिंग कर्सर

- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex { 
    if (dividerIndex == 1) { 
    return [splitView frame].size.width - 161; 
    } 
} 

ध्यान दें कि मैं केवल सूचकांक 1 स्थित विभाजक के लिए कर्सर छुपाना चाहते हैं। क्या कोई मेरी मदद कर सकता है? धन्यवाद। :)


नहीं, मैं नहीं BWToolkit उपयोग करना चाहते हैं।

उत्तर

0

splitView:constrainMaxCoordinate:ofSubviewAt: और splitView:constrainMinCoordinate:ofSubviewAt:splitView:constrainSplitPosition:ofSubviewAt: के बजाय splitView:constrainMinCoordinate:ofSubviewAt: का उपयोग करने का प्रयास करें।

पूर्व दो विधियों को एक बार कहा जाता है क्योंकि उपयोगकर्ता माउस को ड्रैग करता है और ड्रैग के दौरान कर्सर को बदलने का तरीका जानने के लिए वे NSSplitView के लिए पर्याप्त जानकारी देते हैं।

उत्तरार्द्ध को बार-बार कहा जाता है क्योंकि उपयोगकर्ता स्प्लिटर को ड्रैग करता है, इसलिए NSSplitView में यह जानने के लिए पर्याप्त जानकारी नहीं है कि आप हर बार निरंतर मूल्य लौट रहे हैं और इसलिए कर्सर को बदल नहीं सकते हैं।

+8

** बेहतर दृष्टिकोण के लिए * माइक ए * द्वारा अगला उत्तर देखें .. ** – Jay

73

मुझे पता है कि इसका उत्तर थोड़ी देर के लिए दिया गया है, लेकिन आपूर्ति का उत्तर मेरी आवश्यकताओं के अनुरूप नहीं था।

प्रतिनिधि विधि splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: आपको विभाजक को खींचने के लिए प्रभावी आयताकार सेट करने की अनुमति देता है। यदि आप NSZeroRect वापस लौटते हैं तो splitView:constrainMaxCoordinate:ofSubviewAt: और splitView:constrainMinCoordinate:ofSubviewAt: में आपके सेटअप के बावजूद कोई ड्रैग कर्सर कभी दिखाई नहीं देगा।

आशा है कि यहां किसी और की सहायता करने वाले किसी अन्य व्यक्ति की सहायता करें।

+0

बढ़िया! वास्तव में मुझे क्या चाहिए :) –

+0

निश्चित रूप से मदद की! धन्यवाद – isobar

+1

स्प्लिट दृश्य को प्रबंधित करने के लिए ऑटो लेआउट का उपयोग करते समय भी आकार बदलने वाले कर्सर को प्रदर्शित होने से रोकने के लिए यह सही काम करता है! धन्यवाद! – Andrew