2008-10-06 21 views
11

मेरे पास एक UIScrollView है जो लंबवत डेटा दिखाता है, लेकिन जहां क्षैतिज घटक आईफोन की स्क्रीन से अधिक व्यापक नहीं है। समस्या यह है कि उपयोगकर्ता अभी भी क्षैतिज खींचने में सक्षम है, और मूल रूप से यूआई के खाली खंडों का खुलासा करता है। मैंने सेटिंग करने की कोशिश की है:क्षैतिज रूप से उछालने से मैं UIScrollView को कैसे रोकूं?

scrollView.alwaysBounceHorizontal = NO; 
scrollView.directionalLockEnabled = YES; 

जो थोड़ा सा मदद करता है, लेकिन फिर भी उपयोगकर्ता क्षैतिज रूप से खींचने में सक्षम नहीं होता है। निश्चित रूप से इसे ठीक करने का कोई तरीका है?

उत्तर

14

यह अजीब बात है, क्योंकि जब भी मैं आयाम पर स्क्रीन की सीमाओं के भीतर फ्रेम और सामग्री आकार के साथ एक स्क्रॉल व्यू बनाता हूं, तो स्क्रॉल दृश्य उस दिशा में स्क्रॉल (या बाउंस) नहीं करता है।

// Should scroll vertically but not horizontally 
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
scrollView.contentSize = CGSizeMake(320, 1000); 

क्या आप वाकई फ्रेम स्क्रीन के भीतर पूरी तरह से फिट बैठता है और कर रहे हैं contentSize की चौड़ाई स्क्रॉल दृश्य की चौड़ाई से अधिक नहीं है?

+0

मेरे पास गलत scrollView.contentSize था ... धन्यवाद! – rustyshelf

6

स्क्रॉलव्यू.बॉन्स को NO पर सेट करने का प्रयास करें और scrollView.always बाउंस वर्टिकल YES।

+2

यह आधा रास्ता है, अब यह लंबवत स्क्रॉल करता है, लेकिन कभी नहीं क्षैतिज रूप से, लेकिन अब लंबवत उछाल नहीं है ... यह अच्छा होगा अगर यह अभी भी लंबवत उछाल सकता है, क्योंकि यह आईफोन पर उस उछाल के बिना स्क्रॉल करने के लिए अनैसर्गिक लगता है। – rustyshelf

+0

@rustyshelf मुझे पता है कि यह थोड़ा देर हो चुकी है, लेकिन डार्रॉन के जवाब के अलावा, 'scrollView भी करें। directionalLockEnabled = YES' – hyd00

1

सुनिश्चित करें कि UIScrollView की सामग्री आकार UIScrollView से अधिक व्यापक नहीं है। अपने स्वयं के ऐप्स में यह क्षैतिज स्क्रॉलिंग से बचने के लिए पर्याप्त था, उन मामलों को छोड़कर जहां मुझे यादृच्छिक दिशानिर्देशों में वास्तव में पागल स्वाइप करना पड़ा था (उदाहरण के लिए, स्क्रॉल शुरू करना, जबकि दृश्य अभी भी कम हो रहा था)।

1

कुछ ध्यान में रखना: आप जानते हैं कि क्षैतिज रूप से देखने के लिए कुछ भी अतिरिक्त नहीं है, लेकिन क्या आपके उपयोगकर्ता यह जान लेंगे? क्षैतिज रूप से दिखाने के लिए कोई अतिरिक्त सामग्री नहीं होने पर भी आप थोड़ा क्षैतिज बाउंस चाहते हैं। यह उपयोगकर्ता को पता है कि क्षैतिज स्क्रॉल करने के उनके प्रयासों को अनदेखा नहीं किया जा रहा है, उनके देखने के लिए वहां कुछ भी नहीं है। लेकिन, हाँ, अक्सर आप वास्तव में उछाल नहीं चाहते हैं।

0

WebViews के लिए मेरे संस्करण, एक आम समाधान:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

[webView.scrollView setContentSize: CGSizeMake(webView.frame.size.width, webView.scrollView.contentSize.height)]; 

} 
2

होना या न होना एक दृश्य स्क्रॉल (और बाउंस) क्षैतिज तीन बातों पर निर्भर करता है:

  • सामग्री आकार
  • बाईं और सही सामग्री इन्सेट
  • स्क्रॉल व्यू की चौड़ाई -

यदि स्क्रॉल व्यू सामग्री आकार और इनसेट्स को फिट कर सकता है तो यह स्क्रॉल या बाउंस नहीं करता है। इसलिए जैसे

बचें क्षैतिज उछाल:

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width - scrollView.contentInset.left - scrollView.contentInset.right, height); 

मैं इस सवाल का जवाब द्वारा जोड़ा जा रहा है क्योंकि पिछले अभियानों को ध्यान में contentInset नहीं लिया।

6

स्टोरीबोर्ड scrollview बस मदद कर सकते हैं में उछाल खड़ी के लिए चेकबॉक्स ...

enter image description here

17
scrollView.bounces = NO; 

मेरे लिए काम किया।

0

यदि ओएस एक्स 10 के रूप में कोई भी ओएस एक्स के लिए विकसित हो रहा है, तो यहां देख रहा है।

स्विफ्ट:: 7, समाधान इस तरह, स्क्रॉल दृश्य पर false/NO को horizontalScrollElasticity गुण सेट करने के लिए है

scrollView.horizontalScrollElasticity = false 

ऑब्जेक्टिव-सी:

scrollView.horizontalScrollElasticity = NO 
4

कि मेरे लिए काम करता स्विफ्ट में:

scrollView.alwaysBounceHorizontal = false 
scrollView.bounces = false 
संबंधित मुद्दे