2010-06-01 16 views
12

मैं एक आईफोन वेबपैप बना रहा हूं और एक इनपुट फ़ील्ड वाला एक पेज है। मैं फ़ील्ड को वर्चुअल कीबोर्ड के ऊपर स्क्रॉल करने के लिए स्क्रॉल करना चाहता हूं। मैंने इनपुट फ़ोकस ईवेंट (यानी कुंजीपटल दिखाए जाने से ठीक पहले) पर स्क्रॉल करने के लिए (x, y) डालने का प्रयास किया है, लेकिन जब मैं पृष्ठ को फिर से स्क्रॉल करना शुरू करता हूं (संभवतः डिफ़ॉल्ट मोबाइल सफारी व्यवहार के आधार पर)। मैंने कीप्रेस इवेंट हैंडलर सेट करने का भी प्रयास किया, लेकिन उन घटनाओं के प्रचार को रोकने से कीबोर्ड को अक्षम कर दिया गया, हालांकि यह स्क्रॉलिंग को रोकता था।आईफोन सफारी वर्चुअल कीबोर्ड पर टाइप करते समय चयनित तत्व पर स्क्रॉलिंग

क्या वर्चुअल कीबोर्ड दिखाता है, और जब मैं टाइपिंग फिर से शुरू करता हूं, तो यह पृष्ठ को किसी विशेष स्थिति (इनपुट क्षेत्र के साथ केवल कीबोर्ड के ऊपर) को मजबूर करने का कोई तरीका है)।

+0

मुझे नहीं लगता कि इस समस्या का समाधान है, यह आईफोन पर टेक्स्टरेरा के अंदर की समस्याओं के समान है - हालांकि टेक्स्ट एरिया बहुत खराब है, यह सामग्री को संपादित करने के बाद आपके ज़ूम अनुपात को बदल देगा (यदि आप ज़ूमिंग अक्षम करते हैं तो वास्तव में बेकार होता है क्योंकि आप इसे वेब ऐप की तरह व्यवहार करना चाहते हैं क्योंकि आप ऐप बंद किए बिना पसंदीदा ज़ूम सेटिंग पर वापस नहीं जा सकते हैं।)। –

+1

@ मुझे यकीन नहीं है कि मैं उपर्युक्त टिप्पणी से सहमत हूं।यदि आप एक वेब एप्लिकेशन बना रहे हैं तो आपको मोबाइल सहित विभिन्न वेब ब्राउज़र से अलग-अलग व्यवहारों पर विचार करना होगा - लेकिन आम तौर पर मुझे मोबाइल सफारी पर वर्णित तरीके से फ़ॉर्म के साथ समस्याएं नहीं हैं। @spinlock क्या आप विशेष रूप से मोबाइल ब्राउज़र के लिए वेबपैप तैयार कर रहे हैं या नहीं? आप किस एसडीके का उपयोग कर रहे हैं? डैशकोड या अन्य? क्या आप अपने कंटेनर डीआईवी को स्क्रॉल करने की इजाजत दे रहे हैं? क्या आपका पृष्ठ बस स्क्रीन पर फिट है लेकिन स्क्रॉल नहीं करता है? इनमें से कुछ उत्तर हमें आपकी समस्या का समाधान करने में मदद कर सकते हैं। – T9b

+0

अरे @ स्पिनलॉक क्या आपने टाइप करते समय एक ही स्थान पर इनपुट इनपुट प्राप्त करने का प्रबंधन किया था? अग्रिम धन्यवाद – scanales

उत्तर

3

ठीक है, तो शायद यह सबसे खराब हैक जिसे आप कभी भी देखेंगे, लेकिन यह कुछ भी नहीं धड़कता है।

आप क्या कर सकते हैं, टेक्स्ट बॉक्स की स्थिति को गतिशील रूप से (जावास्क्रिप्ट का उपयोग करके) को position:fixed पर बदलना है, यह पृष्ठ के बजाए ब्राउज़र विंडो के सापेक्ष होने के लिए टेक्स्टबॉक्स की स्थिति बदल देगा। इसे आईफोन की स्क्रॉलिंग को अप्रासंगिक प्रस्तुत करना चाहिए और आपका टेक्स्ट बॉक्स पेज के शीर्ष पर होना चाहिए चाहे कोई फर्क नहीं पड़ता। फिर बर्लर पर, सीएसएस स्थिति फिर से सापेक्ष पर सेट की जाती है (जिसे इसे वापस अपने स्थान पर रखना चाहिए)।

इस सुंदर बनाने के लिए आप टेक्स्टबॉक्स के पीछे एक div डाल सकते हैं ताकि यह वास्तविक साइट सामग्री को छुपा सके, और आप ऊपर और बाएं सीएसएस गुणों का उपयोग करके टेक्स्टबॉक्स को केंद्रित कर सकते हैं (बस उन पर भी साफ़ करें सुनिश्चित करें)।

0

देखें जहाँ तक मेरा समस्या आपके हो रही पता scrollTo (एक्स, वाई) के बजाय सीएसएस translate3d इस्तेमाल करने की कोशिश है कि जब कीबोर्ड की शुरूआत है , ब्राउज़र विंडो को तत्व के रूप में देखने की कोशिश कर रहा है।

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

यदि आप तत्व को मैन्युअल रूप से देखने के लिए मैन्युअल रूप से स्क्रॉल करने का प्रयास नहीं करते हैं तो आप क्या व्यवहार कर रहे हैं (कोई स्क्रिप्टिंग नहीं)?

मैं इंप्रेशन के तहत हूं कि आईफोन ब्राउज़र मूल रूप से वही करता है जो आप चाहते हैं। यदि नहीं, तो तत्व स्थिति के साथ ऐसा कुछ हो सकता है। अर्थात। ब्राउज़र तत्व की स्थिति की उचित गणना नहीं कर सकता है उदा। यदि यह एक निश्चित स्थिति कंटेनर में है (क्योंकि जैसे ही ब्राउज़र स्कॉल करने की कोशिश करता है, वैसे ही यह स्थान बढ़ने जा रहा है)।

यदि यह विफल हो जाता है तो स्क्रॉल डालने का प्रयास करें, समय-समय पर कार्य करने के लिए ताकि कुंजीपटल आने के बाद आग लग जाए।

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