मैं सबक्लास में अपने subviews
को समायोजित करने का प्रयास कर रहा हूं, लेकिन मैं स्क्रॉल संकेतकों को परेशान नहीं करना चाहता हूं। इन तक पहुंचने के लिए कोई सार्वजनिक इंटरफ़ेस प्रतीत नहीं होता है और मैं यह देखना चाहता हूं कि कोई दृश्य स्क्रॉल संकेतक में से एक है या नहीं (ताकि मैं इसे अनदेखा कर सकूं)।UIScrollView के सबव्यूम की गणना करते समय स्क्रॉल संकेतक को कैसे बाहर निकालना है?
UIScrollView.h
इन दो Ivars वाणी:
UIImageView* _verticalScrollIndicator;
UIImageView* _horizontalScrollIndicator;
... लेकिन मैं निम्नलिखित की कोशिश की और एक लिंकर त्रुटि मिली:
for(UIView* v in self.subviews)
{
// Ignore the scroll-indicator views
if((v == _horizontalScrollIndicator) ||
(v == _verticalScrollIndicator))
{
continue;
}
// View is one of mine - do stuff to it...
}
एप्पल जाहिर है आप इन के साथ खिलवाड़ नहीं करना चाहती है, जो मामला उन्हें कुछ चालाक करना चाहिए ताकि subviews
से लौटाई गई सरणी में उन्हें शामिल न किया जाए (ऐप्पल पर आओ, यह मुश्किल नहीं है!), लेकिन तब तक मैं उन्हें कैसे अनदेखा कर सकता हूं?
मैं एक UIScrollView सबक्लास लिख रहा हूं, इसलिए मैं उन अन्य सबव्यूज़ के नियंत्रण में नहीं हूं। मैंने ओवरड्राइड करने की कोशिश की है AddSubview: और willRemoveSubview: ट्रैक रखने के लिए, लेकिन स्क्रॉल संकेतक सामान्य रूप से किसी भी अन्य दृश्य की तरह जोड़ा जाना चाहिए क्योंकि वे इन्हें भी कॉल करते हैं। – jhabbott
मैं इस पर @ कुर्ट्रेविस के साथ जाऊंगा। अपनी खुद की सरणी रखें, इसे एडस्यूब्यू ओवरराइड करके बनाए रखें: और हटाएं सबव्यूव: (जो मुझे नहीं लगता कि ओएस स्क्रॉल संकेतकों के लिए कॉल करता है)। यदि आप ऐसा नहीं करना चाहते हैं, तो ऐप्पल निर्भरताओं के साथ एक त्वरित और गंदा जवाब addSubview पर सबव्यूज़ को टैग करना है:। जब आप सबव्यूज की गणना करते हैं, तो टैग वाले लोगों को अस्वीकार करें। यहां नकारात्मकता यह है कि आप सबक्लास के उपयोगकर्ताओं के लिए टैग खराब कर देंगे, जिन्हें अकेले छोड़े गए टैग की आवश्यकता हो सकती है। अन्य समाधान मैं सोच सकता हूं कि सभी के पास ऐप्पल आंतरिक पर निर्भरता है। – danh
ऐप्पल addSubView का उपयोग करता है: स्क्रॉल संकेतक जोड़ने के लिए यह व्यवहार्य नहीं है। सब कुछ जो उप-दृश्यों को ट्रैक करना चाहता है, उसे भी सम्मिलित करें: सबव्यूव: * विधियों में ट्रैक रखना चाहिए। – jhabbott