मुझे लगता है कि पहले इस सवाल का जवाब लिखा रूप से कोड में कुछ समस्या है, विशेष रूप से जब में है उनके कई स्पर्श हैं।
(नोट: मैं कोड को देख रहा हूं जिसे मैंने एलिमेंटल लाइब्रेरी का उपयोग संदर्भ के रूप में लिखा था, इसलिए कुछ कॉल उपयोगकर्ता लाइब्रेरी में अलग हो सकती हैं)।
ए) कोड बटन के उद्देश्य से स्पर्श छूने वाला नहीं है; यह TouchEvent.getTouches() को कॉल करता है। आप अपने बटन के लिए स्पर्श प्राप्त करने के लिए Touchstart और touchmove पर TouchEvent.getTargetTouches() को कॉल करना चाहते हैं। आप स्पर्श स्पर्श प्राप्त करने के लिए touchend पर TouchEvent.getChangedTouches() को कॉल करना चाहते हैं।
बी) कोड मल्टीटाउच को ध्यान में रखता नहीं है। टचस्टार्ट पर, आप जांच सकते हैं कि एक सिंगल टच उपलब्ध है और एक से अधिक होने पर जमानत हो सकती है। साथ ही, टचस्टार्ट पर, स्पर्श की आईडी को दूर करें, फिर इसे टचमोव में उपयोग करें और वापस लौटाए गए सरणी में अपनी टच आईडी ढूंढने के लिए स्पर्श करें (यदि उपयोगकर्ता ने बाद में दूसरी उंगली को छुआ है)। आप टचमोव और टचचेन्ड पर कई स्पर्शों को सरल और जांच भी सकते हैं और वहां फिर से जमानत कर सकते हैं।
सी) मुझे विश्वास है कि आपको टचस्टार्ट पर स्टॉपप्रॉपैगेशन कॉल करने की आवश्यकता है, क्योंकि आप ईवेंट को संभालने में सक्षम हैं। मुझे नहीं लगता कि वे टचस्टार्ट ईवेंट पर event.stopPropagation कहां कॉल करते हैं आप देख सकते हैं कि यह क्लिक हैंडलर में होता है, लेकिन टचस्टार्ट नहीं। यह स्पर्श को ब्राउज़र द्वारा स्वचालित रूप से एक क्लिक में बदलने से रोकता है, जो एकाधिक क्लिक का कारण बनता है।
एक आसान तरीका भी है। यदि आपको बटन पर शुरू करने के बारे में कोई परवाह नहीं है, तो आप टचस्टार्ट ईवेंट में बस अपने क्लिक तर्क को कॉल कर सकते हैं (और सुनिश्चित करें कि आप एकल स्पर्श की जांच करें, और event.stopPropagation पर कॉल करें) और टचमोव और टचचेंड को अनदेखा करें। सभी टचमॉव और टचचेन्ड सामान बटन पर ड्रैग करने की अनुमति देने के मामले को संभालने के लिए है।
पता चला है कि इस सूत्र अभी भी जीवित है गुड ...: डी –