Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface GUI工具包如何区分单击和双击?_User Interface_Event Handling_Mouse - Fatal编程技术网

User interface GUI工具包如何区分单击和双击?

User interface GUI工具包如何区分单击和双击?,user-interface,event-handling,mouse,User Interface,Event Handling,Mouse,正如您在中所看到的,我目前正在处理单点和双击事件–我希望在单击后执行一个操作,在双击后执行一个完全不同的操作。问题是,低级事件只会告诉我这是鼠标按下或这是鼠标向上,总点击次数为==2。这种方式很难区分单次点击和双击,因为当鼠标在单次点击后出现时,我必须等待一段时间以确保没有第二次点击 现在我想知道不同的GUI工具包如何处理这个问题,因为没有神奇的方法。你不能有单独的高级单点和双击事件而不延迟单点事件或其他事情,对吗 (解决这个问题的通常方法似乎是将单点和双击操作关联起来,比如第一次单击时选择,第

正如您在中所看到的,我目前正在处理单点和双击事件–我希望在单击后执行一个操作,在双击后执行一个完全不同的操作。问题是,低级事件只会告诉我这是鼠标按下或这是鼠标向上,总点击次数为==2。这种方式很难区分单次点击和双击,因为当鼠标在单次点击后出现时,我必须等待一段时间以确保没有第二次点击

现在我想知道不同的GUI工具包如何处理这个问题,因为没有神奇的方法。你不能有单独的高级单点和双击事件而不延迟单点事件或其他事情,对吗


(解决这个问题的通常方法似乎是将单点和双击操作关联起来,比如第一次单击时选择,第二次单击时启动应用程序。这样一来,单点操作与双击操作一起触发并不重要。我说的对吗?)

您总是需要某种计时器来区分单击和双击。想想看:你无法预测第二次点击是否会在第一次点击后发生,你只需等着瞧

在iOS上,您可以使用手势识别器。如果你只注册了一个单点击识别器,它会立即启动,但一旦你注册了一个双点击识别器,你就会注意到一个单点击不会立即启动,而是在一个明显的延迟之后。让我在一个应用程序中用两个手指点击一次,因为延迟真的很烦人


如果单击操作是可撤消或可取消的,则可以解决延迟问题:在单击计数=1时执行该操作,如果单击计数=2,则恢复单击操作。但是(从用户的角度来看)可能会导致不期望的/意外的用户界面行为。

我认为你的最后一段是对的。唯一的替代方法是在挂起队列中保持单击,并且仅在双击超时后触发它。但这会让UI变得相当时髦。