2012-01-15 8 views
6

in the msdn overview (under Touch and Manipulation) वर्णित मूल परिदृश्य के लिए क्रमशः प्रत्येक संबंधित टचडाउन और टचअप के लिए टचएन्टर और टचलेव को निकाल दिया जाता है। माउस के विपरीत, स्क्रीन के साथ संपर्क बनाए रखने के लिए टच और स्टाइलस को बाध्य नहीं किया जाता है।TouchLeave से TouchUp को अलग करने और TouchEnter से TouchDown के लिए रणनीति?

क्या टचइंटर और टचलेव का उपयोग करने का कोई तरीका है जब केवल उंगली को यूआईएलमेंट में खींच लिया जाता है। चूंकि इन घटनाओं को प्रत्येक टचअप और टचडाउन के लिए निकाल दिया जाता है, इन घटनाओं को अलग करने का सबसे अच्छा तरीका क्या है?

एक रणनीति जो एकल उंगली के मामले के लिए काम करेगी, टचडाउन पर ध्वज सेट करना है, और जांचें कि फ्लैग टचअप पर सेट है या नहीं। यह टचअप पर कुछ शर्त जांच की अनुमति देता है। हालांकि, कई उंगलियों के लिए, यह व्यवहार्य नहीं है।

कोई पूर्वावलोकन टचइंटर और पूर्वावलोकन टचलेव घटनाओं को निकाल दिया गया है, केवल पूर्वावलोकन टचडाउन और पूर्वावलोकन टचअप। एक उंगली एक UIElement करने पर उतारा और उसके बाद के लिए घटनाओं के अनुक्रम यह अधिक की राशि जुटाई इस प्रकार है:

  1. TouchEnter
  2. PreviewTouchDown
  3. टचडाउन
  4. PreviewTouchUp
  5. touchup
  6. TouchLeave

यह अनुक्रम एक Touc को अलग करने में मदद नहीं करता है UIElement में स्क्रीन पर खींचने वाली उंगली के कारण ऐसा हुआ है, जो यूआईएलमेंट पर सीधे उंगली वाली उंगली से है। क्या मुझे कुछ याद आ रहा है, या ढांचा इस तरह के भेदभाव का समर्थन नहीं करता है?

उत्तर

0

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

0

आप घटना के लिए एक TouchPoint पुनः प्राप्त है, तो एक संपत्ति पर यह Action जिससे आपको पता चलता है कि क्या यह एक Down, एक Move या एक Up घटना है नामित है।

void m_element_TouchEnter(object sender, System.Windows.Input.TouchEventArgs e) 
{ 
    var touchPoint = e.GetTouchPoint(m_someElement); 

    if (touchPoint.Action == System.Windows.Input.TouchAction.Move) 
    { 
     //This is a "true" TouchEnter event 
    } 
    else if (touchPoint.Action == System.Windows.Input.TouchAction.Down) 
    { 
     //This is a "true" TouchDown event. 
    } 
} 

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

  • कोई संबंधित समस्या नहीं^_^