【问题标题】:(Tizen studio, wearable, web app) How to detect long press on back-hardware button?(Tizen 工作室、可穿戴设备、网络应用程序)如何检测长按后硬件按钮?
【发布时间】:2021-05-27 20:05:16
【问题描述】:
我正在为三星可穿戴设备开发一个网络应用程序,我想检测用户何时长按后退硬件按钮。
到目前为止,我发现的唯一信息是:
document.addEventListener('tizenhwkey', function(e) {...});
问题?此事件仅在后退按钮被释放时触发,但不幸的是,当后退按钮被按下时它不会触发 - 并且在按下后退按钮和释放时需要信息时检测长按。
任何想法如何检测长按后硬件按钮?
【问题讨论】:
标签:
tizen-web-app
tizen-native-app
tizen-studio
【解决方案2】:
确实没有办法使用 Tizen Web 检测长按。另一种方法是检测快速双击,而不是长按。这可以使用计时器来完成。
例如
const doubleClickWaitTime = 400;
let doubleClickTimeout = -1;
window.addEventListener('tizenhwkey', function(ev) {
if (ev.keyName === 'back') {
if (doubleClickTimeout === -1) {
// First click of back button
doubleClickTimeout = setTimeout(() => {
doubleClickTimeout = -1;
backButtonSinglePress();
}, doubleClickWaitTime);
} else {
// Second click of back button
clearTimeout(doubleClickTimeout);
doubleClickTimeout = -1;
backButtonDoublePress();
}
}
});
function backButtonSinglePress() {
// Single press
}
function backButtonDoublePress() {
// Double press
}
执行以下操作:
- 当用户单击硬件键时,会启动一个计时器,在
doubleClickWaitTime 毫秒后触发一个函数。
- 如果用户在此期间再次按下硬件按钮,定时器将被取消,并调用
backButtonDoublePress()。
- 如果用户没有再次按下硬件按钮,计时器将触发并在重置计时器后执行
backButtonSinglePress()。
可以修改doubleClickWaitTime 变量,让用户有更多时间双击。但是,此延迟越长,触发单击事件所需的时间就越长。