2014-02-24 112 views
1

我正在將一段HTML5應用程序的代碼從iOS/Android移植到Windows Phone 8.在此應用程序中,有一個包含多個元素的垂直滾動視圖。 在原始應用程序中,我使用「touchstart」和「touchend」事件。這意味着每次用戶觸摸List時,我都會收到一個touchstart事件,甚至在滾動後,當用戶擡起手指時,我會得到一個touchend。MSPointer等效於「touchend」

MSPointer模型的工作原理不同。有MSPointerDown這是touchstart的確切等效物,所以在這方面沒有問題。 我無法讓我的頭瞭解如何對touchend行爲進行建模。 MSPointerUp是不夠的,因爲只有當用戶將其手指放在發生MSPointerDown的同一個容器內時纔會拋出它。因此,如果用戶觸摸該列表,然後向上滑動,然後擡起手指,則該事件不會被觸發。還有MSPointerOut,當用戶離開MSPointerUp被觸發的容器時觸發,這裏的問題是,一旦容器被留下(所以在滾動列表期間)並且在用戶提升後不會觸發它的手指。

我在這裏遇到了一些問題,如何用MSPointer建模一個「touchend」,它將以與Webkit相同的方式進行觸發。

乾杯

湯姆

+0

你看過pointercancel嗎?它似乎可以爲你工作... http://msdn.microsoft.com/en-us/library/ie/hh846776(v = vs.85).aspx – t1nr2y

+0

與pointercancel的問題是,它被解僱後用戶滑動一定的距離(即使他不擡起手指)。取消表示以指針開頭的事件不會觸發指示器(出於各種原因,可能是因爲用戶離開指示區域或滑動過長) – Tom

回答

0

這是我處理這個問題的方式。

即使向下/移動監聽器被附加到某個元素,我將上監聽器附加到窗口。
這意味着無論用戶在屏幕上的哪個位置擡起手指/筆/鼠標(甚至在PC上的IE瀏覽器窗口之外),都會觸發Up事件。
這也意味着您必須在一個函數中處理您應用中的所有Up事件。但是你可以在元素的Down事件上設置一個標誌(一些全局變量),並在UP事件中檢查該標誌。

我一直在做這個很長一段時間在PC網頁上的鼠標事件,以處理當用戶讓我們在瀏覽器窗口之外的鼠標按鈕。
當他們不這樣做的時候很煩人,就像在谷歌地圖街景中你想要移動鼠標並且不得不移動鼠標一樣,並且你放開了窗口外的按鈕,但它仍然認爲你在拖。