2014-09-10 47 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