2014-09-10 69 views
0

是否有可能讓按鈕能夠在iOS上長按按鈕?我搜遍了所有,並沒有找到任何解決方案,這個問題。起初,如果你長按按鈕,它會嘗試選擇它(複製)。使用一些CSS,我禁用了這個,但它仍然沒有註冊長按鈕按下。我認爲這是因爲你可能會滾動頁面,而不是長時間按壓頁面。這樣做的目的是我想讓按鈕在長按下消失。在iOS上長按鈕(Javascript)

這是一個在PC上工作但不在我的iPhone上的JSFiddle(有一個div被註釋掉,因爲如果長按是在div或按鈕上並不重要,我可以創建一個仿真按鈕使用格): http://jsfiddle.net/ynkLmz5n/3/

在此先感謝。

var MenuToggle = document.getElementsByClassName("hide")[0]; 
MenuToggle.style["-webkit-user-select"] = "none"; 
MenuToggle.addEventListener("mousedown", Vanish); 
MenuToggle.addEventListener("mouseup", VanishClear); 
var timer; 
function Vanish() { 
    longpress = false; 
    timer = setTimeout(function() { 
     MenuToggle.style.display = "none"; 
    }, 1000); 
} 
function VanishClear() { 
    clearTimeout(timer); 
} 
+0

這個問題http://stackoverflow.com/questions/2625210/long-press -in-javascript有你所問,但似乎沒有人關心在iOS上測試它似乎。也許你可以嘗試將https://github.com/pisi/Longclick轉換爲像你使用的香草JS,看起來像一個工程。 – RaphaelDDL 2014-09-10 18:17:36

回答

2

您是否嘗試過使用touch事件?

var timer 

MenuToggle.addEventListener('touchstart', function() { 
    timer = setTimeout(function() { 
    MenuToggle.style.display = 'none' 
    }, 1000) 
}, false) 

MenuToggle.addEventListener('touchend', function() { 
    clearTimeout(timer) 
}, false) 
+0

不,完全忘了它們。我以前用過它們,但暫時不用。謝謝。 – MathMan08 2014-09-10 18:35:34

1

你會想取代鼠標事件的使用touch事件(touchstart和touchend)。

這裏有一個更新的小提琴:http://jsfiddle.net/ynkLmz5n/4/

MenuToggle.addEventListener("touchstart", Vanish); 
MenuToggle.addEventListener("touchend", VanishClear); 

另外,如果你正在尋找增加觸摸交互,我建議hammer.js。這是一個很大的觸動庫,包括像Press的東西支持)

項目頁面:http://hammerjs.github.io/

新聞事件文檔:http://hammerjs.github.io/recognizer-press/

+0

謝謝。這很好。我不需要全面的觸摸交互,只有這一個元素需要它。 – MathMan08 2014-09-10 18:39:32