2011-10-09 12 views
7

मेरे पास UIWebViewUIScrollView के अंदर है।UIWebView स्क्रॉल को UIScrollView पर कैसे अग्रेषित करें? (सशर्त रूप से)

यह विचार स्क्रीन पर अधिक पढ़ने अंतरिक्ष बनाने उपयोगकर्ता ऊपर की तरफ वेबपेज स्क्रॉल जब करने में सक्षम होना है - UIScrollView स्क्रॉल ऊपर की तरफ तक उपकरण पट्टी दिखाई दे रहा है, और जाहिर है जब टूलबार nomore दिख रहा है वास्तव में स्क्रॉल पृष्ठ पर मौजूद अधिक सामग्री दिखाने के लिए वेबपृष्ठ।

IPhone सफ़ारी ब्राउज़र बिल्कुल एक ही कार्यक्षमता है।

देखने स्क्रीनशॉट (प्रथम) डिफ़ॉल्ट व्यवहार मैं हो रही है के लिए - मैं लगता है क्योंकि: स्क्रॉल संदेश के बाद से स्पर्श/स्क्रॉल वेबव्यू क्षेत्र पर सीधे हो रहा है वेबव्यू द्वारा सेवन किया जाता है।

मैं यहाँ करना चाहते हैं क्या programatiicaly है UIScrollivew करने के लिए 'ऊपर की ओर स्क्रॉल' आगे और जब नहीं करने के लिए जब तय।

कैसे इस के आसपास पाने के लिए पर कोई सुझाव दिए गए तो उपयोगी होगा। धन्यवाद!!

enter image description here

enter image description here

उत्तर

0

आप किसी अन्य के नीचे एक UIScrollView एक में एक खोज बॉक्स और UIWebView जोड़ सकते हैं। वेबव्यू स्क्रॉल होने पर सामग्री ऑफ़सेट होने के लिए आप निम्न कोड स्निपेट का उपयोग कर सकते हैं।

UIScrollView* currentScrollView; 
for (UIView* subView in testWebView.subviews) { 
    if ([subView isKindOfClass:[UIScrollView class]]) { 
     currentScrollView = (UIScrollView*)subView; 
     currentScrollView.delegate = (id)self; 
    } 
} 

अब आप ऑफसेट मूल्य आप scrollview didscroll प्रतिनिधि विधि से प्राप्त करने के लिए अपने आधार scrollview ऑफसेट के y मूल्य बदल सकते हैं।

2

UIWebView class reference हतोत्साहित एक UIScrollView में एक UIWebView embedding:

महत्वपूर्ण: आप UIScrollView वस्तुओं में UIWebView या UITableView वस्तुओं एम्बेड नहीं करना चाहिए। यदि आप ऐसा करते हैं, तो अप्रत्याशित व्यवहार परिणाम कर सकते हैं, क्योंकि दो वस्तुओं के लिए स्पर्श इवेंट को मिलाया जा सकता है और गलत तरीके से संभाला।

हालांकि मुझे लगता है कि आप अभी भी अपने सुविधा ;-) लागू करना चाहते हैं

आइडिया 1: एक UIScrollView में UIWebView एम्बेड न करें, इसके बजाय UIWebView के stringByEvaluatingJavaScriptFromString: विधि का उपयोग कर जावास्क्रिप्ट चलाने के लिए, करने के लिए डोम को संशोधित नीचे एक टूलबार जोड़ें। यदि आवश्यक हो, तो आप कुछ कस्टम यूआरएल योजनाओं को पंजीकृत करके टूलबार पर धक्का दिए गए किसी भी बटन से कॉलबैक ऑब्जेक्ट-सी कोड कॉल कर सकते हैं।

आइडिया 2: एक UIScrollView में UIWebView एम्बेड करते हैं, लेकिन एक सामान्य UIView में न करें। विग्नेश के सुझाव पर बिल्डिंग, प्रतिनिधि के माध्यम से अपने वेब व्यू के आंतरिक स्क्रॉल व्यू के scrollViewDidScroll: कॉलबैक को सुनें, contentOffset बनाम contentSize की ऊंचाई को कॉलबैक कहलाते समय प्रत्येक बार देखें। एक बार वे बराबर होने के बाद, इसका मतलब है कि आप नीचे आ गए हैं। एक बार ऐसा होने पर आप अपने टूलबार के फ्रेम को "UIView" दर्ज करने और वेबव्यू के फ्रेम को "पुश" करने के लिए एनिमेट कर सकते हैं।

आइडिया 3: ऐप्पल की सिफारिश को अनदेखा करें, और UIWebView को UIScrollView में एम्बेड करें। विग्नेश के सुझाव पर बिल्डिंग, प्रतिनिधि के माध्यम से अपने वेब व्यू के आंतरिक स्क्रॉल व्यू के scrollViewDidScroll: कॉलबैक को सुनें, contentOffset बनाम contentSize की ऊंचाई को कॉलबैक कहलाते समय प्रत्येक बार देखें। एक बार वे बराबर होने के बाद, इसका मतलब है कि आप नीचे आ गए हैं। एक बार ऐसा होने पर वेब दृश्य की userInteractionEnabled प्रॉपर्टी सेट करें, और इसे स्क्रू व्यू पर YES पर सेट करें जिसमें वेब व्यू और टूलबार शामिल है। उम्मीद है कि स्क्रॉल सुचारू रूप से पर्याप्त जारी रहेगा। बेशक आपको userInteractionEnabled को वापस स्विच करने के लिए निर्धारित करने के लिए उसी स्क्रॉल व्यू को उसी तरीके से सुनना होगा।

इस विचार पर एक भिन्नता वेबव्यू के लिए userInteractionEnabled को NO पर सेट करना होगा, लेकिन वेब सामग्री के फ्रेम की ऊंचाई को अपनी सामग्री से मिलान करने के लिए सेट करें आकार, और सामग्री को विस्तारित करें, इसके अनुसार युक्त स्क्रॉल दृश्य का आकार देखें।

दोनों रूपों दोष यह है कि कुछ मामलों में आप इस तरह के लिंक :-(लेकिन शायद कि आपके मामले के लिए काफी अच्छा है पर क्लिक के रूप में काम करने के लिए सक्षम नहीं होगा है। कम से कम पहले बदलाव में यह इतना बुरा नहीं है।

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