Pregunta

Por desgracia esto es difícil para mí para poner a prueba a mí mismo, porque todavía tengo que conseguir un Magic Mouse de la mía, pero me han dicho por mis probadores que sí tienen un ratón mágico que el desplazamiento impulso no está funcionando en mi aplicación . No he subclases NSScrollView, pero vista del documento de ScrollView es todo personalizado. No he anulado scrollwheel: en cualquier lugar, ya sea, y sin embargo, el impulso parecer sólo no está funcionando. No estoy seguro por dónde empezar. Pensé que acababa de enviar eventos scrollwheel y cosas que cuidar de sí mismos. (Moviendo la rueda o en las obras del trackpad MBP como se esperaba.) Es evidente que de alguna manera debo estar haciendo algo que lo impide, pero yo ni siquiera sé por dónde empezar. Pensamientos?

¿Fue útil?

Solución

Me di cuenta de esto hace un tiempo y el problema era que el desplazamiento, que estaba haciendo un montón de manipulación de vista de fantasía algo así como la forma en el iPhone la UITableView añade y elimina puntos de vista, ya que desplazarse dentro y fuera de la pantalla. Esto funcionó muy bien para el rendimiento -. Pero cuanto más se metió en la programación OSX, más me daba cuenta que esto estaba mal para OSX (pero la idea correcta del iPhone)

De todos modos, lo que realmente está pasando, al parecer, es que cuando se hace algo así como una rueda de desplazamiento, el evento de desplazamiento se envía a la opinión de que hay debajo del cursor del ratón y luego se ondula hacia abajo los respondedores / puntos de vista hasta que se pone en alguna parte que lo maneja. Normalmente esto no es un problema, pero con un impulso de desplazamiento del sistema operativo es en realidad el envío de eventos scrollwheel cada vez más pequeños a la vista que estaba bajo el cursor en el momento en el impulso comenzó . Esto significa que si se quita la vista durante el curso del desplazamiento (porque se desplaza fuera de la pantalla o algo así), se rompe la cadena y el impulso se detiene porque la vista que se sigue recibiendo los mensajes scrollwheel ya no está en la jerarquía de vistas es.

La solución "simple" es no quitar la vista de que consiguió el último evento scroll - aunque sea fuera de la pantalla. La mejor solución (y la que fui con) es no tratar de usar NSViews como son UIViews y en lugar de simplemente dibujar el contenido mediante drawRect. :) No sólo es que alrededor de mil millones de veces más rápido, simplemente funciona (tm) con un impulso de desplazamiento, ya que es como OSX espera que las cosas se hagan.

Repite conmigo: OSX no es iPhoneOS ..: P

Otros consejos

Par de desplazamiento comportamiento puede ocurrir cuando no se establecen las propiedades de desplazamiento de línea y página de desplazamiento de la propia NSScrollView.

Más allá de eso, usted está simplemente va a tener que conseguir un Magic Mouse - fácil de decir o no :-) - para probar esto por sí mismo o publicar el código completo de la vista personalizada, así como la xib que lo contiene. No hay manera de que otros le pueden ofrecer más que conjeturas (como el anterior) sin él.

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