如何在 Elm 中检测 "long press"?
How to detect "long press" in Elm?
有没有办法在 Elm 中检测 "long press"?即 mouse/pointer 按下事件后一段时间没有移动(或至少没有跨元素边界的移动)。
我正在使用 elm 包 mpizenberg/elm-touch-events。
我在 javascript 中找到了关于这样做的讨论,但在 Elm 中没有。
谢谢
伊万
这是我的做法:
- 跟踪按钮被按下的时间——初始化为"not pressed",用
Nothing
表示
- 按下按钮时,更新模型以显示按钮已按下 0 秒 (
Just 0
)
- 使用
Time.every
订阅每隔一秒左右递增 'pressed time'
- 每次递增后,检查按钮被按下的时间,如果时间足够长就做一些事情
您需要在模型中跟踪每个可以 "long pressed" 的元素的状态。
完整示例:https://ellie-app.com/wRngKVN6Gca1
我不熟悉 mpizenberg/elm-touch-events 包,但我认为您可以修改此代码以轻松使用该包。
有没有办法在 Elm 中检测 "long press"?即 mouse/pointer 按下事件后一段时间没有移动(或至少没有跨元素边界的移动)。
我正在使用 elm 包 mpizenberg/elm-touch-events。
我在 javascript 中找到了关于这样做的讨论,但在 Elm 中没有。
谢谢
伊万
这是我的做法:
- 跟踪按钮被按下的时间——初始化为"not pressed",用
Nothing
表示
- 按下按钮时,更新模型以显示按钮已按下 0 秒 (
Just 0
) - 使用
Time.every
订阅每隔一秒左右递增 'pressed time' - 每次递增后,检查按钮被按下的时间,如果时间足够长就做一些事情
您需要在模型中跟踪每个可以 "long pressed" 的元素的状态。
完整示例:https://ellie-app.com/wRngKVN6Gca1
我不熟悉 mpizenberg/elm-touch-events 包,但我认为您可以修改此代码以轻松使用该包。