2013-02-07 31 views
32

मैं एक एप का निर्माण कर रहा हूं जो छोटे में एक पूर्ण पूर्ण स्क्रीन UIWebView में सरल HTML (स्थानीय रूप से) की मात्रा में लोड हो रहा है। मैं देख रहा हूं कि इस वेब दृश्य को स्क्रॉल करना किसी भी अन्य UIScrollView को स्क्रॉल करने से काफी अलग है। यह एक प्रदर्शन या उत्तरदायित्व मुद्दा प्रतीत नहीं होता है, प्रति से ... यह सिर्फ एक बात है कि आप गति को कैसे देखते हैं और वेब दृश्य को ऊपर और नीचे फ्लिक करते हैं। यह बहुत "मूल" महसूस नहीं करता है (एक बेहतर शब्द की कमी के लिए)। यह गुड़ या पुडिंग के माध्यम से स्क्रॉलिंग की तरह है ... थोड़े "चिपचिपा" और "स्लिम" के रूप में नहीं, जैसा कि आप इसे महसूस करना चाहते हैं।UIWebView को स्क्रॉल करना क्यों * किसी अन्य UIScrollView को स्क्रॉल करने से बहुत अलग लगता है?

क्या किसी को पता है कि इसका क्या कारण है? क्या इसे ठीक करने का कोई तरीका है, या कम से कम एक UIWebView स्क्रॉल करने पर अधिक "मूल" महसूस करते हैं?

+0

आप किस प्रकार के HTML प्रदर्शित कर रहे हैं? हो सकता है कि देशी नियंत्रणों का उपयोग करके सबकुछ पूरा करने का एक तरीका हो। –

+0

@ जैक लॉरेंस - एचटीएमएल वास्तव में उपयोगकर्ता द्वारा जेनरेट किया गया है, जो समय-समय पर सर्वर से खींचा जाता है, और कोर डेटा में संग्रहीत होता है। मैं सैद्धांतिक रूप से मूल नियंत्रण के साथ दृश्य को कार्यान्वित कर सकता हूं, लेकिन यह उपयोगकर्ता द्वारा जेनरेट किए गए डेटा को सीधे प्रदर्शित करने के रूप में लचीला नहीं है। – wxactly

उत्तर

53

मेरे पास एक ही धारणा है। इसे वेब व्यू के स्क्रॉल व्यू डिकलेरेशन दर के साथ करना होगा। बस इस परीक्षण को चलाया, और 1) यह हमारे संदेह की पुष्टि करता है और 2) एक फिक्स का सुझाव देता है।

मैं जोड़ा एक scrollview और मेरे यूआई के लिए वेब दृश्य तो लॉग इन करें:

NSLog(@"my scroll view's decel rate is %f", self.scrollView.decelerationRate); 
NSLog(@"my web view's decel rate is %f", self.webView.scrollView.decelerationRate); 
NSLog(@"normal is %f, fast is %f", UIScrollViewDecelerationRateNormal, UIScrollViewDecelerationRateFast); 

उत्पादन WebView अधिक घर्षण होने के बारे में अनुमान है कि इस बात की पुष्टि:

my scroll view's decel rate is 0.998000 
my web view's decel rate is 0.989324 
normal is 0.998000, fast is 0.990000 

और एक ठीक चलता है:

self.webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal; 
+0

रेशमी चिकनी। बिलकुल उत्तम। धन्यवाद! – wxactly

+15

यह ध्यान देने योग्य है कि ऐसा इसलिए किया जाता है क्योंकि अधिकांश विचारों के मुकाबले वेब दृश्य प्रस्तुत करना अधिक महंगा होता है। स्क्रॉलिंग "कठोर" बनाना यह सुनिश्चित करके छिपाने में मदद करता है कि जब उपयोगकर्ता स्क्रॉल करता है तो आकर्षित करने के लिए कम नया क्षेत्र होता है। ऐसा नहीं है कि आपको यह नहीं बदला जाना चाहिए यदि आपको पता है कि कोई विशेष वेब दृश्य इसे संभाल सकता है, लेकिन ध्यान रखें कि यह * किसी कारण से किया जा रहा है और आपको यह सुनिश्चित करना चाहिए कि यह आपके उपयोग के मामले में कोई समस्या नहीं है। –

+0

यह शानदार है! मुझे उम्मीद है कि यह मेरी परियोजना के लिए काम करता है। धन्यवाद। –