2009-06-13 7 views
7

मैं आईफोन पर दो (या अधिक) यूआईटीच ऑब्जेक्ट्स के बीच अंतर करने की कोशिश कर रहा हूं। विशेष रूप से, मैं उस क्रम को जानना चाहता हूं जिसमें स्पर्श हुआ था।आईफोन पर यूआईटीच ऑब्जेक्ट्स के बीच अंतर

उदाहरण के लिए, मेरे-टच में बेगन: साथ: विधि मुझे यूआईटीच ऑब्जेक्ट्स का एनएसएससेट मिलता है। अब मैं पता लगा सकता हूं कि कितने स्पर्श हैं, लेकिन, कौन सा ऑब्जेक्ट किस उंगली का प्रतिनिधित्व करता है?

मुझे यूआईटीच पर टाइमस्टैम्प संपत्ति दिखाई देती है - क्या मैं यह देख रहा हूं? मैं देखता हूं कि आखिरी या पहला स्पर्श प्राप्त करने के लिए यह कैसे उपयोगी होगा - स्पर्श प्रदान करना म्यूटेट नहीं करता है ...

इसमें मेरी समस्या है। मैं नवीनतम स्पर्श को सिंगल करने के लिए टाइमस्टैम्प का उपयोग कर सकता हूं, लेकिन फिर स्पर्श जो पहली बार हुआ था, और आईटी नवीनतम स्पर्श बन गया ...

इस अभ्यास के अंत में, मैं इसे लागू करने में सक्षम होना चाहता हूं ज़ूम इन या आउट करने के लिए "चुटकी" इशारा, आदि

किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद।

उत्तर

3

मैं कुछ स्पर्श नमूना कोड यहाँ मिल गया है:

http://github.com/kailoa/6tringle-touchsamplecode/tree/master http://6tringle.com/blog/2009/TouchSampleCode.html

यह कुछ लोगों के लिए उपयोगी हो गया है, और मुझे लगता है कि आप मदद कर सकता है।

NSMutableArray *ActiveTouches पर एक नज़र डालें। यह वह संग्रह है जिसका उपयोग मैं उस क्रम का ट्रैक रखने के लिए करता हूं जिसमें स्पर्श होता है।

उस कोड बेस में चुटकी और खिंचाव का एक उदाहरण है जो सरणी का उपयोग करता है।

+0

धन्यवाद, मुझे कुछ समय लगेगा जब मैं कुछ समय प्राप्त करूंगा। – Jasarien

+0

सक्रिय टच एरे आपके सिस्टम में क्या रखता है उससे अलग है [ईवेंट स्पर्शफॉरव्यू: स्वयं]? –

2

अक्सर चर्चा किए गए समाधान घटनाओं को देखना और वर्तमान x और y और पिछले x और y मानों की तुलना उनसे मेल करने के लिए करना है। यद्यपि कुछ चालें प्रतीत होती हैं। घटनाक्रम आदेश से बाहर आ सकते हैं, और मैंने ऐसे मामलों को देखा है जहां यह हार्डवेयर या ओएस की तरह दिख रहा था (10) चलती उंगलियों के साथ भ्रमित हो रहा था।

कुछ लोगों ने बताया कि स्पर्श घटनाओं का पुन: उपयोग किया जाता है और आप उस तथ्य का उपयोग कर सकते हैं कि कौन सी उंगली है। यह विश्वास है कि StackOverflow पर कम से कम एक बार कवर किया गया है, मुझे विश्वास है।

23

प्रत्येक उंगली एक UITouch वस्तु हो जाता है, और एक ही वस्तु फिर से और फिर आप को दिया जाता है । बस शुरुआती यूआईटीच ऑब्जेक्ट्स सेट करने के लिए पॉइंटर्स को याद रखें, और उंगलियों का ट्रैक रखने के लिए पॉइंटर तुलना करें।

एप्पल के संदर्भ डॉक्स से:

एक स्पर्श वस्तु एक दृश्य के दौरान एक दिया उंगली के लिए लगातार है, और UIKit यह mutates के रूप में यह यह भर उंगली ट्रैक करता है। उस स्पर्श विशेषताएँ जो स्पर्श को स्पर्श का चरण, दृश्य में इसका स्थान, उसका पिछला स्थान, और इसका टाइमस्टैम्प है। ईवेंट-हैंडलिंग कोड इस विशेषता का मूल्यांकन करने के लिए इन गुणों का मूल्यांकन करता है।

+0

प्रासंगिक दस्तावेज यहां http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html#//apple_ref/doc/uid/TP40009541-CH3-SW14 (वर्तमान में है यदि यह यूआरएल टूटा हुआ है, तो 'मल्टीटाउच इवेंट्स - हैंडलिंग मल्टीटाउच इवेंट्स - एक जटिल मल्टीटाउच अनुक्रम को संभालने' के तहत 'आईओएस के लिए इवेंट हैंडलिंग गाइड' देखें। – Piku

2

मुझे कैलोआ कडानो के कोड पर एक नज़र डाली गई थी। आप मूल रूप से वर्तमान UITouch वस्तुओं के एनएसएमयूटेबलएरे को रखते हैं। हालांकि यूआईटीच के दस्तावेज यह बताते हैं:

एक यूआईटीच ऑब्जेक्ट लगातार मल्टी-टच अनुक्रम में है। किसी ईवेंट को संभालने पर को कभी भी UITouch ऑब्जेक्ट को बनाए रखना नहीं चाहिए। आप करने की जरूरत है एक और करने के लिए एक चरण से एक स्पर्श के बारे में जानकारी रखने के लिए, आप UITouch वस्तु से कि जानकारी की प्रतिलिपि चाहिए।

यदि आप ईवेंट समाप्त होने पर इसे फिर से रिलीज़ करते हैं तो मुझे इसे बनाए रखने का कारण नहीं दिखता है, लेकिन एसडीके दस्तावेज़ कहता है।

2

मैं वही जानकारी ढूंढ रहा था। और हाँ ऐसा प्रतीत होता है कि आप UITouch डेटा को बनाए रखने का अनुमान नहीं लगा रहे हैं। "एक परिसर मल्टी टच अनुक्रम हैंडलिंग" इस Apple Developer Documentation की धारा के अनुसार, "उचित" जिस तरह से कई छूता ट्रैक करने के लिए UITouch घटना के सूचक मूल्य से है।