Longpress是否支持tizen可穿戴应用程序?

时间:2016-06-27 13:57:28

标签: tizen

我使用mousedown和mouseup事件来识别长按。但这对我来说不适用于Tizen模拟器。但是相同的代码在浏览器中运行良好。 Tizen提供的Tau仅支持滑动。

以下代码在浏览器中运行良好:



r.Value = r.Value

var timeOut;
$("button").mouseup(function(event){
	 
    clearTimeout(timeOut);
});
$("button").mousedown(function(event){
    
    timeOut = setTimeout(function(){
        
    	alert('you hold your mouse more than 2 seconds.!');
      
    },2000);
});




Referred this fiddle too

但是在tizen可穿戴模拟器中没有任何作用。所以我可以尝试任何其他建议吗?

2 个答案:

答案 0 :(得分:2)

您可以使用' touchstart'和' touchend'而不是' mousedown'和' mouseup'。

我现在使用基本Web模板测试下面的代码。它运作良好! :)

main.js

window.onload = function() {
// TODO:: Do your initialization job

// add eventListener for tizenhwkey
document.addEventListener('tizenhwkey', function(e) {
    if (e.keyName === "back") {
        try {
            tizen.application.getCurrentApplication().exit();
        } catch (ignore) {}
    }
});

// Sample code
var mainPage = document.querySelector('#main');

var timeOut;
var cnt = 0;
mainPage.addEventListener("touchend", function() {
    var contentText = document.querySelector('#content-text');
    console.log("timer clear!");
    clearTimeout(timeOut);
});

mainPage.addEventListener("touchstart", function() {
    var contentText = document.querySelector('#content-text');
    console.log("touchstart!");
    timeOut = setTimeout(function(){
        console.log("long!");
        contentText.innerHTML = "Long!" + cnt;
        cnt++;
    },2000);
});

};

答案 1 :(得分:0)

接受的答案会导致长按事件在其他一些情况下触发,例如当用户实际滚动视图足够长的时间时。此外,任何常规处理程序(如常规点击)仍会在长按时触发。此版本修复了这些问题。此外,它还会为长按产生通常的反馈(触觉和音频,如设备设置中所配置)。

var longpressTimer;
var wasLongpress = false;
function endLongpress(e) {
    if (wasLongpress) {
        // Prevent default handling, like taps
        e.preventDefault();
        wasLongpress = false;
    } else if (longpressTimer) {
        clearTimeout(longpressTimer);
        longpressTimer = null;
    }
}

// Could target any other element, like a specific control.
var target = document.getElementById('body');
// Any of these should cancel a long-press, or be canceled if the last touch was the start of a long-press
target.addEventListener("touchcancel", function(e) {
    endLongpress(e);
});

target.addEventListener("touchmove", function(e) {
    endLongpress(e);
});

target.addEventListener("touchend", function(e) {
    endLongpress(e);
});

target.addEventListener("touchstart", function(e) {
    longpressTimer = setTimeout(function() {
        longpressTimer = null;
        e.preventDefault();
        // So that we know we should prevent default handling
        wasLongpress = true;
        try {
            tizen.feedback.play('HOLD');
        } catch (err) {
            //unable to play feedback
        }
        // handle long-press from here
        console.log("long!");
    }, 500);
});