2011-08-09 9 views
9

मैं अगर मैं प्रश्न शीर्षक में सही ढंग से पूछा पता नहीं है, लेकिन यहाँ मैं संक्षिप्तUIWebView scrollTo सुचारू रूप से व्यवहार करना चाहिए

में वर्णन करने के लिए जा रहा हूँ मैं एक UIWebView है और div के आधार पर सामग्री लोड हो रहा है और प्रत्येक div अद्वितीय आईडी है loadRequest पर। हालांकि मेरी सामग्री बहुत बड़ी थी, इसलिए जब मैं 'और पढ़ें'

यह 'और पढ़ें' ऑटोस्कोल पर ईवेंट आग जो मैं जावास्क्रिप्ट के माध्यम से संभालना चाहता हूं, तो मैं टुकड़ों में टूट जाता हूं और शेष सामग्री लोड करता हूं। इसलिए एक बार है कि घटना के सक्रिय होने पर यह सिर्फ window.location.href = div1 + DIV2 (इसके सिर्फ एक उदाहरण) का उपयोग करके डेटा (जिसके लिए मैं एक और तरीका है) जोड़ देते हैं।

अब मुख्य समस्या है जब मैं scrollDown और wherver मैं 'और पढ़ें' संदेश मिलता है और यह ऑटो आग तो यह मौजूदा div और दिखाने के लिए डेटा कहते हैं, लेकिन जब

(उपयोगकर्ता अपनी एक जारी रखने के पढ़ने लग रहा है)

मैं अप करने के लिए यह weired व्यवहार करता है क्योंकि यह सिर्फ div करने के लिए डेटा संलग्न करें और setYScroll (updatedlocation) के लिए स्क्रॉल की ओर स्क्रॉल;

updatedlocation जब हम div करने के लिए सामग्री जोड़ रहे हैं के लिए प्रयोग किया जाता है और यह एक ही स्थिति में जहाँ उपयोगकर्ता था करने के लिए स्क्रॉल करना चाहिए।

तो एक उदाहरण के साथ शुरू करते हैं, वर्तमान में मैं DIV2 पढ़ रहा हूँ मान लेते हैं और जब मैं स्क्रॉल अप 'और पढ़ें' घटनाओं निकाल दिया और DIV2 को div1 जोड़ने और फिर वेब दृश्य प्रतिनिधि shouldStartLoadWithRequest कहा जाता है की सुविधा देता है।

तो हर बार जब आप जब तक स्क्रॉल कर रहे हैं इसकी अद्यतन सामग्री DIV2 लेकिन पहले यह मेरे div1 के पिछले रों स्थान लेता है और उसके बाद के लिए स्थान जहां मैं वर्तमान में पढ़ रहा था DIV2 करने के लिए मुझे ले लो। तो यह लगता है कि वास्तव में weired, अचानक यह मुझे कहीं थोड़ी देर के लिए ले जाता है और दूसरा

मैं इस समाधान के साथ की कोशिश की, के घर्षण के भीतर मेरे वर्तमान स्थिति के लिए मुझे ले मैं स्क्रीनशॉट लेने के बारे में सोचा और एक imageView बनाने वर्तमान UIWebView की उस स्क्रीनशॉट छवि के साथ और जब भी 'और पढ़ें' ईवेंट हो रहा है, तो वेबव्यू पर डालें। एक बार वेब दृश्य लोड होने के बाद छवि को हटाएं और वेबदृश्य प्रदर्शित करें। लेकिन यह उसी तरह से हो रहा है, समस्या हर चीज वेबव्यू प्रतिनिधि के तहत हो रहा है। मैं अभी भी यह नहीं समझ सका कि क्या हो रहा है? इस समस्या का समाधान मैं सही ट्रैकज पर हूं या

+0

जब उपयोगकर्ता "अधिक पढ़ें" टैप करते हैं तो आप अपनी सामग्री कैसे लोड करते हैं? क्या आप 'loadHtmlString' कहते हैं? यदि आप करते हैं, तो आपको 'stringByEvaluatingJavaScriptFromString:' –

+0

के माध्यम से नई सामग्री को पारित करने का प्रयास करना चाहिए, मैं loadRequest ऑब्जेक्ट का उपयोग करके कॉल नहीं करता हूं। और वेबव्यू डेलगेट में मैं जांच रहा हूं अगर ([(एनएसएसटींग *) [घटक ऑब्जेक्टएट इंडेक्स: 1] isEqualToString: @ "readMore"]) {ActivityIndicatorView.hidden = TRUE; [गतिविधिइंडिकेटर दृश्य रोकना];} –

उत्तर

0

पर मुझे कोई बेहतर समाधान है, मुझे संदेह है कि आपके द्वारा अनुभव किया गया "कूद" इस तथ्य पर निर्भर करता है कि वेब दृश्य पूरी तरह से फिर से खींचा गया है (और हम सभी जानते हैं कि UIWebView है धीमी गति से)।

तो, मैं 2 विकल्प देखें:

  1. लागू यांत्रिकी "और अधिक पढ़ें" पूरी तरह से अजाक्स के माध्यम से जावास्क्रिप्ट में;

  2. बजाय डेटा लोड के loadRequest का उपयोग कर दृश्य में, कि यूआरएल के लिए एक NSConnection बनाने के लिए और फिर इसे में HTML आप stringByEvaluatingJavaScriptFromString के माध्यम से NSConnection से मिला इंजेक्शन लगाने के द्वारा वेब दृश्य को अपडेट करें।

दूसरा विकल्प संभवतः अच्छे, क्योंकि यह पूरी तरह से एसडीके आधारित है, लेकिन आप आसानी से देखेंगे यह कहीं अधिक पहले एक बहुत अधिक जटिल है कि। उनमें से दो काम करेंगे और मुझे पूरा यकीन है कि आपको उस तरह का चिकना व्यवहार देगा जो आप के बाद हैं।

+0

देर से प्रतिक्रिया के लिए खेद है। जैसा कि मैंने बताया, 1 विकल्प पहले से ही जावास्क्रिप्ट के माध्यम से कार्यान्वित कर रहा हूं, मैंने अपने प्रश्न में वर्णित किया है। 2 विकल्प, मैं किसी भी वेबसर्वर को कोई अनुरोध नहीं कर रहा हूं, मेरी सभी एचटीएमएल फाइलें मेरे प्रोजेक्ट डीआईआर में हैं और जब भी उपयोगकर्ता स्क्रॉल करते हैं और अगर कुछ 'के बीच में' स्क्रॉल करते समय 'और पढ़ें' बटन आते हैं तो यह जावास्क्रिप्ट विधि को कॉल करता है और डेटा संलग्न करें और मेरे वेब व्यू प्रतिनिधि को चाहिएStStartLoadWithRequest। मेरी जावास्क्रिप्ट को HTML फ़ाइल में इंजेक्शन दिया गया है। अगर मेरी टिप्पणियां आपको स्पष्ट नहीं हैं, तो मुझे बताएं, मुझे पता है कि कोड –

0

यदि मैं आपके प्रश्न को सही ढंग से समझता हूं तो ऐसा लगता है कि आप "अनंत स्क्रॉल" अवधारणा के अपने स्वयं के हैंडलिंग को लागू करने की कोशिश कर रहे हैं।

one of the many infinite scroll libraries को जांचने के लिए आपके समय के लायक हो सकता है जो पहले से ही बाहर हैं। यदि कोई आपकी आवश्यकताओं को पूरी तरह से फिट नहीं करता है तो आपको वह प्रेरणा मिल सकती है जो आपको अब आपके पास ठीक करने के लिए आवश्यक है।

+0

कोड के बिना समझना वाकई मुश्किल है आपका लिंक टूटा हुआ है ... – Eric

1

मेरे पास एक समान स्थिति है। मेरे पास क्या है एक दूसरे के शीर्ष पर दो UIWebViews है। जब एक दृश्य को अपडेट करने का समय होता है, तो मैं स्क्रॉल स्थिति को पकड़ता हूं, छुपा UIWebView में नया डेटा लोड करता हूं, जब अन्य UIWebView अपने डेटा को लोड कर लेता है तो यह पहली स्क्रॉल की वर्तमान स्क्रॉल स्थिति में अपनी स्क्रॉल स्थिति सेट करता है, फिर छुपाता है पहला वेबव्यू और खुद को अनदेखा करता है। इसकी सुंदर निर्बाध और बहुत अच्छी तरह से काम करता है।

संबंधित मुद्दे