Windows 10 開發日記(二)-- 手勢順序調研

來源:互聯網
上載者:User

標籤:

     前文再續,書接上一回。

    上回說到Windows10手勢分為高中低三個檔次,於是心血來潮想要研究一下這三個等級的操作順序是如何的?Manipulation手勢的幾個事件的觸發順序又是怎麼樣的,什麼時候觸發Starting,什麼時候觸發Started?UserControl自身有一個虛方法:OnManipulationStarting,OnManipulationStarted,它同時又有ManipulationStarted,ManipulationStarted事件,為什麼功能類似的東西要有不同的方式,他們的觸發順序是什嗎?於是這些問題就構成了今天的這篇文章。

     簡單地來說,這篇文章是為瞭解決以下的幾個問題:

     1. PointerPressed,ManipulationStarting,Tapped事件的觸發順序 

     2. UserControl的重寫方法:MainPage_ManipulationStarting(), MainPage_ManipulationStarted() 與UserControl的ManipulationStarting,ManipulationStarted事件的註冊方法的執行順序

    3. ManipulationStarting、ManipulationStarted的觸發條件。

 第一個問題:

     這個只需要寫個比較簡單的Demo,就可以把這個順序找出來:PointerPressed會先被觸發,ManipulationStarting次之,只有手指或者滑鼠放開的時候才會觸發Tapped事件。關於Tapped事件值得一說的是:MSDN給出的解釋是:因為有其他手收例如Holding,在手指按下的時候,你是不能確定是什麼事件會被觸發的,只有手指鬆開之後,才會根據相應的條件判斷到底是什麼事件。

     從結果上來看,PointerPressed事件會被首先觸發,有點出乎我的意料,因為MSDN上給出的ManipulationStarting的解釋是:這個時間會啟動Manipulation Processor,看來這個意思是這個Manipulation Processor是監控Manipulation 系列事件的。

     畢竟PointerPressed與ManipulationStarting都是屬於Framwork層的時間,應該是架構決定的這個順序。

     但是這三個事件是平行的事件,即,不論哪個事件被標記為處理過,即e.Handled = true,都不會影響其他兩個事件,而只會影響事件不會繼續路由下去。

第二個問題:

     研究這個問題是出於我的好奇心,同樣作用的東西,為什麼要有兩種形式?說實話,我不知道為什麼,MSDN好像也沒有給出一個明確的答案,它只是說,OnManipulationStarting represents a prewired event handler for the UIElement.ManipulationStarting event.這個重載方法會在事件之前被調用,而且這個方法在其他所有Manipulation事件觸發之前執行,這樣你就可以通過控制event Data來控制手勢事件的路由了。

     還是沒說為什麼要有這個方法。。。

     但是這解決了第二個問題的第二個問題,執行順序的問題,重寫方法會首先執行,然後才是控制項的相應事件被觸發,不僅僅是Starting哦,你如果不信,可以去試試,Delta,Completed都是一樣的。

第三個問題:

      之前有個同事問我,Win10上怎麼在手點擊在螢幕上就能捕獲這個事件,並且獲得這個點,感覺ManipulationStarted事件不是很靈敏啊。確實不敏感,我決定先從ManipulationStarted事件說起:ManipulationStarted represents that the manipulation recognition logic has detected pointer movement. 。看到沒有:檢測到移動,就是說,必須要移動一下,才會觸發這個事件。

      但是PC與Phone又有不一致的情況:PC上使用滑鼠,按下之後不動,也會觸發ManipulationStarted事件,同樣的,Phone上就不會,你必須按下後稍微調動一下,才會觸發ManipulationStarted事件。此處有很多點,如果知道答案的朋友可以告訴我

     OK,說回ManipulationStarting:Occurs when the manipulation processor is first created.就是說這個事件會觸發操作處理器被調起,並且監控觸發後續的事件。通俗點就是:當你手指點下,這個事件就會被觸發,這個事件就能解答同事的疑惑了。

 

     我知道很多朋友是帶著上一章的疑問來看這一章的,不好意思發散了一下,答案馬上解答。

 

Windows 10 開發日記(二)-- 手勢順序調研

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.