【发布时间】:2015-08-12 05:24:51
【问题描述】:
我想在我闪亮的应用程序中有一个用户可以单击或选择某些区域的图,因此我使用了plotOutput 的单击和画笔参数。我的问题是,当刷子启动时,点击处理程序也会被调用。我想知道什么时候点击了,我想知道什么时候刷了,但是如果点击是刷子的一部分,那么我想忽略它。
示例:在以下应用程序中,如果您只是刷(单击某处并拖动鼠标),您会收到“点击”消息以及“刷”消息。在这种情况下,我只想获得“刷”消息。
library(shiny)
library(ggplot2)
runApp(shinyApp(
ui = fluidPage(
plotOutput("plot", click = "click", brush = "brush")
),
server = function(input, output, session) {
output$plot <- renderPlot({
ggplot(mtcars, aes(wt, mpg)) + geom_point()
})
observeEvent(input$click, {
cat("clicked\n")
})
observeEvent(input$brush, {
cat("brushed\n")
})
}
))
【问题讨论】:
-
根据
?plotOutput,似乎没有“鼠标按钮向上”消息,您需要正确区分点击和刷牙。一种解决方法是定义一个超时时间(例如 200 毫秒),仅在此超时后才处理单击事件,并在此超时后相应地忽略所有画笔事件。您是否有理由不简单地收听双击事件? -
我不想仅仅因为用户体验而使用 dblclick - 它更简单,点击更有意义。也许我只是需要睡觉(凌晨 4 点 30 分),但我不确定你的建议将如何解决我的问题,我想了一会儿,似乎并没有解决我的问题跨度>
-
如果刷机事件在最后一次点击事件后不到 200 毫秒发生,则由您处理。如果没有,你忽略它。您只在事件发生 200 毫秒后处理点击,您必须为此设置某种计时器。
-
@daattali 你找到解决方案了吗?我很想看看。
-
不,我得到的官方回答是(至少目前)没有办法做到这一点。我最终使用双击而不是单击