我有一個基於網絡的應用程序,其中包含一個用戶可以用手指上下滾動的組件。我使用事件的preventDefault方法來防止觸摸移動在iOS設備上移動整個屏幕的默認行爲。如何防止iOS 5中touchmove事件的默認行爲?
不幸的是,這似乎不再適用於我剛剛升級到今天早上的iOS 5。我不得不假設這只是在iOS 5中完成的,但我還沒有能夠找到提供指示的資源。
謝謝!
更新#1:我一直無法找到我的具體問題的答案,但我能夠調整我的代碼,使用-webkit溢出滾動樣式(設置爲「touch 「),並實現時髦的慣性滾動功能(其中內容的滾動速度取決於滑動的速度,如果碰到邊界則會」回彈「回彈。我現在還有一個奇怪的問題,出於某種奇怪的原因,溢出滾動行爲有時會混淆,因此您必須將您的手指左右拖動到包含元素上以使其內容上下移動,但我還沒有能力弄清楚爲什麼會發生這種情況 - 有沒有人有任何想法???
也許你可以做一些邏輯檢查,像'如果($(e.currentTarget)的.css( '溢出')= '滾動'!)電子.preventDefault();'。由於document.ontouchmove會在可觸發元素的ontouchmove之後觸發,因此可以執行'el.ontouchmove = function(){allowScroll = true}',然後讓'document.ontouchmove'使用該值來確定操作,然後設置該值假。 –
@BrianNickel感謝您的提示。這是朝着正確的方向邁出的一步,它允許您防止以元素爲單位直接滾動(包括直接在主體上滾動),但是如果用戶觸摸移動已滾動到其可滾動邊緣的可滾動元素它仍然會滾動身體(顯示下面的灰色亞麻布)。也許唯一的辦法是解釋touchmove的方向,並檢查元素是否在其可滾動範圍的邊緣? –
@RyanRapp感謝您的回覆。我可能沒有足夠清楚地描述我正在談論的行爲。在iOS 4中,我會在帶有溢出的touchmove事件處理程序的元素(比如DIV)中使用e.preventDefault(),這樣我就可以通過基於元素內手指移動的絕對定位來移動內容。現在,當我嘗試將整個頁面移動到沒有足夠內容滾動的頁面時,e.preventDefault()會阻止此操作,但它不會滾動頁面,而是四處移動,以便您可以看到Safari的背景紋理。 – natlee75