У меня есть приложение R-Shiny с графиком, который реализует интерактивные действия: щелчок, зависание (зависание - это наведение мыши на график, который можно обнаружить по блеску). Чтобы дать идею, я выкладываю ниже упрощенный shinyapp с функциональностью, которая проблематична для меня, интерактивный сюжет для рисования. (это взято из моего старого ответа здесь)
Это на самом деле работает нормально, однако мне нужно, чтобы люди использовали его со своих смартфонов. Проблема: движения пальцев, которые мы делаем в смартфоне, интерпретируются телефоном как увеличение страницы или прокрутка страницы, а не как выбор мыши или движение мыши по сюжету (зависание).
Есть ли какая-либо модификация кода (java? Css?), Которую я могу реализовать в приложении, чтобы превратить сенсорные события в события мыши, или параметр/жест на смартфоне для включения движения, подобного мышке?
Большое спасибо. Код:
library(shiny)
ui <- fluidPage(
h4("Click on plot to start drawing, click again to pause"),
sliderInput("mywidth", "width of the pencil", min=1, max=30, step=1, value=10),
actionButton("reset", "reset"),
plotOutput("plot", width = "500px", height = "500px",
hover=hoverOpts(id = "hover", delay = 100, delayType = "throttle", clip = TRUE, nullOutside = TRUE),
click="click"))
server <- function(input, output, session) {
vals = reactiveValues(x=NULL, y=NULL)
draw = reactiveVal(FALSE)
observeEvent(input$click, handlerExpr = {
temp <- draw(); draw(!temp)
if(!draw()) {
vals$x <- c(vals$x, NA)
vals$y <- c(vals$y, NA)
}})
observeEvent(input$reset, handlerExpr = {
vals$x <- NULL; vals$y <- NULL
})
observeEvent(input$hover, {
if (draw()) {
vals$x <- c(vals$x, input$hover$x)
vals$y <- c(vals$y, input$hover$y)
}})
output$plot= renderPlot({
plot(x=vals$x, y=vals$y, xlim=c(0, 28), ylim=c(0, 28), ylab="y", xlab="x", type="l", lwd=input$mywidth)
})}
shinyApp(ui, server)