2011-09-22 12 views
5

मैंने कई चीजों की कोशिश की है और इस बिंदु पर कोड पोस्ट करने की संभावना भ्रमित हो जाएगी, इसलिए मुझे अवधारणा से शुरू करने दें।आईफोन: लॉन्ग प्रेस इशारा कैसे गठबंधन करें और मानचित्र पर एक साथ ड्रैग ऑपरेशन कैसे करें?

मुझे किसी भी तरह से लंबे प्रेस के संचालन को जोड़ना होगा और एक ही ऑपरेशन में ड्रैग स्पर्श करना होगा, जैसे LongPressThenDragGestureRecognizer। मैं इसे MKMapView पर पूरा करने की कोशिश कर रहा हूं, इसलिए मैं पूरे समय उपयोगकर्ता इंटरैक्शन को अक्षम नहीं कर सकता, क्योंकि मैं मानचित्र की पैन और ज़ूम कार्यक्षमता चाहता हूं।

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

  1. उपयोगकर्ता के नक्शे पर एक उपरिशायी प्रस्तुत किया है
  2. उपयोगकर्ता छूता है और आइटम पर रखती है यह बताने के लिए एप्लिकेशन जानते हैं कि वे यह
  3. खींचना चाहते हैं एप्लिकेशन को बदल देता है:

    इस कार्यप्रवाह है एक खींची वस्तु के साथ ओवरले और मानचित्र को अक्षम करता है ताकि यह पैनिंग शुरू नहीं कर सके (खींचने के बजाए)।

  4. उपयोगकर्ता उंगली खींचता है, और जब वे स्थानांतरित होते हैं तो वस्तु को फिर से खींचा जाता है।
  5. उपयोगकर्ता खींचें पूरा करने के लिए
  6. अनुप्रयोग एक नया मानचित्र ओवरले के साथ तैयार की वस्तु की जगह उंगली लिफ्टों
  7. अनुप्रयोग पैन/ज़ूम/एनोटेशन चयन, आदि

अनुमति देने के लिए मानचित्र पर उपयोगकर्ता बातचीत में सक्षम बनाता है मैंने बहुत कम सफलता के साथ अब तक कई चीजों की कोशिश की है। अब तक का सबसे अच्छा परिणाम नीचे सूचीबद्ध है। यह MKMapView ऑब्जेक्ट्स (ओवरले के साथ छेड़छाड़ की जांच) पर UILongPressGestureRecognizer का उपयोग करके किया गया था, और फिर मानचित्र स्पर्श स्पर्श ड्रैग के लिए स्पर्शों को ओवरराइड करना।

  • ओवरले दिखाया गया है और उपयोगकर्ता को सफलतापूर्वक एक लंबे समय से प्रेस इशारा है कि उचित रूप से मान्यता प्राप्त हो जाता है करता है
  • मानचित्र उपयोगकर्ता बातचीत अक्षम किया गया है और ओवरले अंगुली उठा लें और नीचे फिर से छूने के लिए तैयार की वस्तु के साथ बदल दिया है
  • उपयोगकर्ता है खींचें आपरेशन
  • आरंभ करने के लिए उपयोगकर्ता उंगली लिफ्टों, तो उस नई ओवरले तैयार की है और मानचित्र बातचीत फिर से सक्षम किया गया है

मैं इतने करीब हूँ, मैं तो बस कैसे एक में इशारों गठबंधन करने के लिए, ताकि उपयोगकर्ता उसकी/उसके अंगुली उठा लें और खींचें शुरू करने के लिए नीचे फिर से छूने की जरूरत नहीं है पता नहीं है।

किसी भी विचार की बहुत सराहना की जाती है।

+0

मैंने इसे सरल फैशन में पहले किया है लेकिन कम से कम ड्रैगिंग शुरू करने के लिए लंबे समय तक दबाया गया है। मैंने इसे एक साधारण बूल के साथ किया था। एक लंबी प्रेस ने 0.25 सेकेंड के बाद हां को एक बूल सेट किया और बुलिंग इशारा केवल लौटने की अनुमति दी गई थी अगर बूल हाँ था। –

उत्तर

0

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

एमकेमैप व्यू में यूआईआरएसस्पॉन्डर बेस क्लास है इसलिए एमके मैपव्यू का अपना व्युत्पन्न संस्करण बनाना आसान होना चाहिए जो स्पर्श घटनाओं का जवाब देता है (इसे सामान्य कार्यक्षमता को बनाए रखने के लिए उन्हें सुपर को पास करने के लिए याद रखना)।

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