WinRT 處理手勢 (以 Flick 為例, 現在好像叫 Cross-Slide )
在WinRT的控制項中,如果預設的事件外有一些手勢你想要去Handle的話有什麼辦法呢?今天剛好就遇到這個問題,經過常識看樣子是成功了,下面就是幾個重點列一下 首先就來個MSDN的連結吧! https://msdn.microsoft.com/library/windows/apps/br241937 一切都是透過這個 GestureRecognizer class做到的 這邊是官方的SampleCode: https://code.msdn.microsoft.com/windowsapps/Manipulations-and-gestures-362b6b59
使用步驟如下
1. 宣告一個 GestureRecognizer
2. 初始化 GestureRecognizer 要「處理」的手勢項目(GestureRecognizer.GestureSettings property) 因為這邊我只是需要處理 CrossSlide,所以我只有用CrossSlide,如果同時需要處理其他的手勢(如PinchZoom等等)可以用 | 來連結其他處理的手勢(請參考MSDN)
3. 設定CrossSlide手勢要處理的相關的屬性 上面的CrossSlideThresholds就是設定觸發手勢的一些屬性,我也是跟著看到的sample一起設定,其實不給也可以,應該就是使用系統預設的,這個就可以讓你調整觸發的參數
4. 設定接收 GestureRecognizer 你設定處理手勢項目的事件 這個是跟 2 相呼應的,你設定要處理了什麼手勢,記得就要接收事件,不然不會觸發等於白寫
5. 在你要處理手勢的控制項上面加入接收PointerPressed, PointerReleased, PointerMoved三個事件,並讓GestureRecognizer 去處理,這個應該是最重要的一步驟 簡單來說就是把Pointer傳進來的 e 通通交給 GestureRecognizer 去「辨識」,這樣一旦達成它所設定的條件,就會觸發事件通知你知道啦! PS:上面可以看到我註解掉的_startPoint 還有 _endPoint,那個其實是我在 CrossSliding觸發的時候用來判斷他是 往左滑 還是 往右滑 用的