Pregunta

Estoy tratando de implementar una característica que un usuario puede seleccionar un texto en una vista Web y, después de soltar el botón del ratón , una pequeña ventana se abrirá para permitir al usuario realizar algunas operaciones en el texto seleccionado.

Sin embargo, estoy corriendo en algunos problemas con la determinación de cuando la selección del usuario ha sido "confirmado", por falta de una palabra mejor, al soltar el botón del ratón. El protocolo informal WebEditingDelegate define un método -webViewDidChangeSelection:, pero se llama cada vez que la selección cambia en absoluto. Así, por ejemplo, si el usuario arrastra a través de una línea entera, -webViewDidChangeSelection: se llama muchas veces - una vez por cada vez que cambia el rango seleccionado. Obviamente, esto no funcionará, ya que estaría apareciendo por la ventana varias veces a lo largo de la calle.

¿Alguien sabe de una manera de lograr lo que necesito?

¿Fue útil?

Solución

Creo que su enfoque en el "ratón hacia arriba" como un evento final podría ser demasiado estrecho. Por ejemplo, ¿qué sucede cuando el usuario hace clic y luego selecciona el texto con las teclas de desplazamiento de flecha? no debe su software de tener el mismo efecto en este caso?

Lo poco conocida sugerido suena razonable para la parte del ratón de la ecuación, pero me preocupa que cuando la selección está cambiando desde el ratón, es posible que nunca llegan a una final "la selección ha cambiado" cuando el ratón no está presionado.

Así que, probablemente abordar este problema con un retraso NSTimer puro. cada vez que reciba una "selección cambiado" de la vista web, restablecer su NSTimer. Cuando se llega a cierta corto tiempo transcurrido, como dicen los 0,5 segundos, poner en marcha y / o mover la ventana.

Se puede ajustar con precisión esta inspeccionando, al vencimiento del temporizador, criterios tales como si el ratón puede estar lesionado. Si el ratón está abajo, que sólo podría posponer el temporizador de un poco de tiempo y ver si el ratón ha sido levantada tras otro medio segundo o así.

Otros consejos

Se puede usar el mismo método, pero sólo para probar si el ratón está presionado, si es así, no hacer nada, si el ratón no se ha reducido, asuma que se acaba de publicar y luego mostrar su ventana.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top