मैं टचस्क्रीन फोन के लिए कुछ लिख रहा हूं। जब उपयोगकर्ता स्क्रीन पर टैप करता है तो मैं प्रोग्राम को एक निर्दिष्ट फ़ंक्शन चलाने के लिए चाहता हूं। जब उपयोगकर्ता स्क्रीन को ऊपर या नीचे खींचता है तो मैं स्क्रीन को स्क्रॉल करना चाहता हूं।

ओएस में तीन प्रासंगिक कॉलबैक फ़ंक्शन हैं (1) स्क्रीन को स्पर्श करने पर पता लगाएं, (2) पता लगाएं कि स्क्रीन पर उंगली कब खींची जाती है और (3) पता लगाती है कि उंगली स्क्रीन से कब निकलती है। प्रत्येक मामले में, कॉलबैक फ़ंक्शन स्क्रीन निर्देशांक प्राप्त करता है जहां प्रासंगिक घटना हुई।

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

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

मेरा ऐप एक सिम्बियन डिवाइस के लिए अजगर में है। चूंकि यह एक बहुत लोकप्रिय मंच नहीं है, इसलिए इसे लागू करने के सर्वोत्तम तरीके के लिए किसी भी सुझाव की सराहना की जाएगी।

0
foosion 14 सितंबर 2011, 21:42

1 उत्तर

सबसे बढ़िया उत्तर

सबसे अच्छा तरीका जो मैं सोच सकता हूं वह है:

टच कॉलबैक: एक्शन_लोकेशन सेट करें = ड्रैग_लोकेशन = करंट_लोकेशन (ओएस द्वारा रिपोर्ट किया गया करंट_लोकेशन)

अन-टच कॉलबैक: यदि current_location की दूरी_थ्रेशोल्ड (जैसे, 20 या 25 पिक्सेल) के भीतर action_location, क्रिया निष्पादित करें

कॉलबैक खींचें: यदि ड्रैग_लोकेशन वर्तमान_लोकेशन से दूरी_थ्रेशोल्ड से अधिक है, तो स्क्रॉल करें और ड्रैग_लोकेशन = करंट_लोकेशन सेट करें

0
foosion 15 सितंबर 2011, 18:45