2012-12-20 6 views
6

के माध्यम से डिवाइस के व्यूपोर्ट एक्स/वाई निर्देशांक को छूता है मैं वर्तमान में एक आईफोन के लिए एक वेबपृष्ठ विकसित कर रहा हूं जिसमें एक डीआईवी तत्व है जो उपयोगकर्ता स्पर्श और खींच सकता है। इसके अतिरिक्त, जब उपयोगकर्ता डिवाइस की स्क्रीन के ऊपर या नीचे तत्व को ड्रैग करता है, तो मैं पृष्ठ को ऊपर या नीचे स्क्रॉल करना चाहता हूं।आईओएस जावास्क्रिप्ट

समस्या जो मैं कर रहा हूं वह टचमोव घटना में निर्देशांक प्राप्त करने के लिए एक विश्वसनीय सूत्र निर्धारित करने का प्रयास कर रहा है जो उपयोगकर्ता की उंगली को डिवाइस व्यूपोर्ट के शीर्ष या नीचे तक पहुंचने के साथ समन्वयित करता है। मेरा वर्तमान सूत्र थकाऊ लगता है और मुझे लगता है कि ऐसा करने का एक आसान तरीका हो सकता है।

मेरे वर्तमान सूत्र निर्धारित करने के लिए स्पर्श घटना स्क्रीन के नीचे तक पहुँच गया है:

function onTouchMoveHandler(e) 
{ 
    var orientation=parent.window.orientation; 
    var landscape=(orientation==0 || orientation==180)?true:false; 
    var touchoffsety=(!landscape?screen.height - (screen.height - screen.availHeight):screen.width - (screen.width - screen.availWidth)) - e.touches[0].screenY + (window.pageYOffset * .8); 
    if(touchoffsety < 40) alert('finger is heading off the bottom of the screen'); 
} 

मैं ऐसे खिड़की, दस्तावेज़, शरीर, e.touches के रूप में वस्तुओं पर जावास्क्रिप्ट प्रतिबिंब का एक सा किया है यह देखने के लिए कि क्या मुझे संख्याओं का एक सेट मिल सकता है जो हमेशा स्क्रीन के शीर्ष या नीचे के बराबर जोड़ता है, लेकिन विश्वसनीय सफलता के बिना। इसके साथ मदद की सराहना की जाएगी।

+0

यहां विभिन्न मोबाइल प्लेटफार्मों और जावास्क्रिप्ट वैरिएबल के गहन स्पष्टीकरण के साथ एक लिंक है जो व्यूपोर्ट आयामों का वर्णन करता है, और वे एक-दूसरे से कितना भिन्न हो सकते हैं। इससे मुझे जवाब खोजने में मदद मिली: http://tripleodeon.com/2011/12/first-understand-your-screen/ – Brain2000

उत्तर

2

screenY एक स्पर्श के क्षेत्र को मानते हुए, वर्तमान स्क्रॉल स्थिति के बावजूद स्क्रीन-टॉप के सापेक्ष y समन्वय होता है, आपकी वर्तमान गणना मुझे पूरी तरह से समझ में नहीं आती है। मुझे आशा है कि मैंने यह गलत नहीं समझा कि आप क्या करने की कोशिश कर रहे हैं।

यह पता लगाने के लिए कि कोई स्पर्श शीर्ष के करीब या डिवाइस के निचले भाग के करीब है, तो मैं पहली बार जांचता हूं कि स्क्रीनवाई शीर्ष के करीब है (शीर्ष 0 है), क्योंकि आप सीधे उस मान के साथ काम कर सकते हैं। फिर, यदि यह शीर्ष के करीब नहीं है, तो गणना करें कि यह नीचे कितना करीब है और उसे जांचें।

var touch = e.touches[0]; 
if (touch.screenY < 50) 
{ 
    alert("Closing in on Top"); 
} 
else //Only do bottom calculations if needed 
{ 
    var orientation=parent.window.orientation; 
    var landscape=(orientation==0 || orientation==180)?true:false; 
    //height - (height - availHeight) is the same as just using availHeight, so just get the screen height like this 
    var screenHeight = !landscape ? screen.availHeight : screen.availWidth; 
    var bottomOffset = screenHeight - touch.screenY; //Get the distance of the touch from the bottom 
    if (bottomOffset < 50) 
     alert("Closing in on Bottom"); 
} 
+0

यह उन समस्याओं में से एक है जो मैंने पार किया है। किसी ने सोचा होगा कि स्क्रीन की ज़रूरत है, लेकिन ऐसा नहीं है। एक कारण यह है कि यदि आपके पास दो IFrames हैं, और नीचे iFrame में एक DIV खींच रहे हैं, तो संख्याएं वर्तमान में स्क्रॉल किए जाने के आधार पर स्कूली लगती हैं। यही वह जगह है जहां window.pageYOffset play में आता है, यह बताता है कि ब्राउज़र विंडो कितनी दूर स्क्रॉल की गई है। लेकिन यह कहां स्क्रॉल किया गया है, इस पर निर्भर करता है, यह सही राशि के लिए क्षतिपूर्ति या नीचे लगता है। यही कारण है कि मैंने इसे 8 से गुणा करने के साथ फंसाया, लेकिन यह अभी भी मुश्किल है। – Brain2000

+0

क्या आपने क्लाइंट की कोशिश की? हो सकता है कि यह आपकी भी मदद करेगा: http://stackoverflow.com/questions/5885808/includes-touch-events-clientx-y-scrolling-or-not – Wutz

+0

हां, मैंने तीनों, क्लाइंटवाई, स्क्रीनवाई और टचवाई की कोशिश की। – Brain2000

1

यह वास्तव में बुरा नहीं है। तुम भी Zepto.js और इस्तेमाल कर सकते हैं अपने में निर्मित स्पर्श घटनाओं और .offset() विधि इसे पाने के लिए थोड़ा आसान:

हालांकि, मैं कि क्या पता करने के लिए इच्छुक हूँ या आप वास्तव में इसे नीचे स्क्रॉल करने का प्रबंधन नहीं करते हैं, और यदि प्रदर्शन प्रभावशाली बनाने के लिए पर्याप्त चिकनी है। (आईओएस में अक्सर स्क्रॉलिंग जावास्क्रिप्ट को वास्तव में कड़ी मेहनत करता है)

+0

मैंने खिड़की.उटरहेइट - टचस्क्रीनवाई <40 का उपयोग करके आईपैड 1 पर बहुत अच्छी तरह से काम किया है। मैं 20 मिलीसेकंड पर एक सेटटाइमआउट का उपयोग कर रहा हूं .scrollTop पैरामीटर को प्रत्येक बार 20 पिक्सेल द्वारा बढ़ाया गया है। मैं div को भी ले जा रहा हूं कि आपकी उंगली उसी राशि से हो रही है, इसलिए पृष्ठभूमि स्क्रॉल करते समय ऐसा नहीं लगता है। प्रदर्शन वास्तव में बहुत चिकनी है। – Brain2000

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