2012-09-04 7 views
21

क्या कोई भी WinRT ऐप में सरल स्पर्श जेस्चर का पता लगाने के बारे में बता सकता है? मैं GestureRecognizer वर्ग उपयोग करने की कोशिश, लेकिन यह काम नहीं किया:सरल टच जेस्चर का पता लगाएं

public MainPage() 
    { 
     this.InitializeComponent(); 
     Windows.UI.Input.GestureRecognizer gr = new Windows.UI.Input.GestureRecognizer(); 
     gr.CrossSliding += gr_CrossSliding; 
     gr.Dragging += gr_Dragging; 
     gr.Holding += gr_Holding; 
     gr.ManipulationCompleted += gr_ManipulationCompleted; 
     gr.ManipulationInertiaStarting += gr_ManipulationInertiaStarting; 
     gr.ManipulationStarted += gr_ManipulationStarted; 
     gr.ManipulationUpdated += gr_ManipulationUpdated; 
     gr.RightTapped += gr_RightTapped; 
     gr.Tapped += gr_Tapped; 
     gr.GestureSettings = Windows.UI.Input.GestureSettings.ManipulationRotate | Windows.UI.Input.GestureSettings.ManipulationTranslateX | Windows.UI.Input.GestureSettings.ManipulationTranslateY | 
     Windows.UI.Input.GestureSettings.ManipulationScale | Windows.UI.Input.GestureSettings.ManipulationRotateInertia | Windows.UI.Input.GestureSettings.ManipulationScaleInertia | 
     Windows.UI.Input.GestureSettings.ManipulationTranslateInertia | Windows.UI.Input.GestureSettings.Tap; 

    } 

    void gr_Tapped(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.TappedEventArgs args) 
    { 
     Debug.WriteLine("gr_Tapped"); 
    } 
    void gr_RightTapped(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.RightTappedEventArgs args) 
    { 
     Debug.WriteLine("gr_RightTapped"); 
    } 
    void gr_Holding(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.HoldingEventArgs args) 
    { 
     Debug.WriteLine("gr_Holding"); 
    } 
    void gr_Dragging(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.DraggingEventArgs args) 
    { 
     Debug.WriteLine("gr_Dragging"); 
    } 
    void gr_CrossSliding(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.CrossSlidingEventArgs args) 
    { 
     Debug.WriteLine("gr_CrossSliding"); 
    } 
    void gr_ManipulationUpdated(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationUpdatedEventArgs args) 
    { 
     Debug.WriteLine("gr_ManipulationUpdated"); 
    } 
    void gr_ManipulationStarted(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationStartedEventArgs args) 
    { 
     Debug.WriteLine("gr_ManipulationStarted"); 
    } 
    void gr_ManipulationCompleted(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationCompletedEventArgs args) 
    { 
     Debug.WriteLine("gr_ManipulationCompleted"); 
    } 
    void gr_ManipulationInertiaStarting(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationInertiaStartingEventArgs args) 
    { 
     Debug.WriteLine("gr_ManipulationInertiaStarting"); 
    } 
+0

में जोड़ा जाता है, जहां आप टेप घटना के लिए कोई हैंडलर जोड़ दिया है मैं नहीं दिख रहा। – test

उत्तर

37

आप mainpage कक्षा का अपना हेरफेर घटनाक्रम है जो आप एक अलग GestureRecognizer बनाए बिना उपयोग कर सकते हैं नोटिस जाएगा। आप इसे this.ManipulationMode से ManipulationModes.All पर सेट करके सक्षम कर सकते हैं। यह आपको मुख्य पृष्ठ Tapped, RightTapped, ManipulationStarting, ManipulationStarted, ManipulationDelta और ManipulationCompleted ईवेंट पर प्रतिक्रियाएं देखने की अनुमति देगा।

जहाँ तक इस Blog और इस MSDN Forum Posting तुम इतनी तरह mainpage के PointerMoved, PointerReleased और PointerPressed ईवेंट प्रबंधित करने की आवश्यकता होगी के अनुसार काम करने GestureRecongnizer हो रही के रूप में।

Windows.UI.Input.GestureRecognizer gr = new Windows.UI.Input.GestureRecognizer(); 

public MainPage() 
{ 
    this.InitializeComponent(); 
    this.PointerPressed += MainPage_PointerPressed; 
    this.PointerMoved += MainPage_PointerMoved; 
    this.PointerReleased += MainPage_PointerReleased; 
    gr.CrossSliding += gr_CrossSliding;  
    gr.Dragging += gr_Dragging;  
    gr.Holding += gr_Holding;  
    gr.ManipulationCompleted += gr_ManipulationCompleted;  
    gr.ManipulationInertiaStarting += gr_ManipulationInertiaStarting;  
    gr.ManipulationStarted += gr_ManipulationStarted;  
    gr.ManipulationUpdated += gr_ManipulationUpdated;  
    gr.RightTapped += gr_RightTapped;  
    gr.Tapped += gr_Tapped;  
    gr.GestureSettings = Windows.UI.Input.GestureSettings.ManipulationRotate | Windows.UI.Input.GestureSettings.ManipulationTranslateX | Windows.UI.Input.GestureSettings.ManipulationTranslateY |  
    Windows.UI.Input.GestureSettings.ManipulationScale | Windows.UI.Input.GestureSettings.ManipulationRotateInertia | Windows.UI.Input.GestureSettings.ManipulationScaleInertia |  
    Windows.UI.Input.GestureSettings.ManipulationTranslateInertia | Windows.UI.Input.GestureSettings.Tap; 
} 

void MainPage_PointerReleased(object sender, PointerRoutedEventArgs e) 
{ 
    var ps = e.GetIntermediatePoints(null); 
    if (ps != null && ps.Count > 0) 
    { 
     gr.ProcessUpEvent(ps[0]); 
     e.Handled = true; 
     gr.CompleteGesture(); 
    } 
} 

void MainPage_PointerMoved(object sender, PointerRoutedEventArgs e) 
{ 
    gr.ProcessMoveEvents(e.GetIntermediatePoints(null)); 
    e.Handled = true; 
} 

void MainPage_PointerPressed(object sender, PointerRoutedEventArgs e) 
{ 
    var ps = e.GetIntermediatePoints(null); 
    if (ps != null && ps.Count > 0) 
    { 
     gr.ProcessDownEvent(ps[0]); 
     e.Handled = true; 
    } 
} 

Documentation आप अपने GestureRecongnizer में जोड़ने और CrossSlideThresholds और दिशा की स्थापना करके CrossSlide घटना सक्षम करने की आवश्यकता के अनुसार। अंतिम लिंक से:

क्रॉसस्लाइड को क्रॉसस्लाइडिंग का समर्थन करने के लिए जेस्चर सेटिंग संपत्ति में सेट किया जाना चाहिए। क्रॉसस्लाइडिंग दूरी थ्रेसहोल्ड डिफ़ॉल्ट रूप से अक्षम हैं। इन मानों को सेट करने के लिए क्रॉसस्लाइड थ्रेसहोल्ड का उपयोग करें।

उदाहरण:

Windows.UI.Input.CrossSlideThresholds cst = new Windows.UI.Input.CrossSlideThresholds(); 
cst.SelectionStart = 2; 
cst.SpeedBumpStart = 3; 
cst.SpeedBumpEnd = 4; 
cst.RearrangeStart = 5; 
gr.CrossSlideHorizontally = true; 
gr.CrossSlideThresholds = cst; 
gr.CrossSliding += gr_CrossSliding; 

और सुनिश्चित करें कि यह आपके GestureSettings

gr.GestureSettings = Windows.UI.Input.GestureSettings.ManipulationRotate | Windows.UI.Input.GestureSettings.ManipulationTranslateX | 
        Windows.UI.Input.GestureSettings.ManipulationScale | Windows.UI.Input.GestureSettings.ManipulationRotateInertia | 
        Windows.UI.Input.GestureSettings.ManipulationScaleInertia | Windows.UI.Input.GestureSettings.ManipulationTranslateInertia | 
        Windows.UI.Input.GestureSettings.Tap | Windows.UI.Input.GestureSettings.CrossSlide; 
संबंधित मुद्दे