Re: -magnifyWithEvent: changed in Yosemite?
Re: -magnifyWithEvent: changed in Yosemite?
- Subject: Re: -magnifyWithEvent: changed in Yosemite?
- From: Kyle Sluder <email@hidden>
- Date: Sun, 16 Nov 2014 16:29:12 -0600
On Sun, Nov 16, 2014, at 04:16 PM, Graham Cox wrote:
> Yosemite seems to have changed the way the "pinch to zoom" trackpad
> gesture is handled. This gesture invokes -magnifyWithEvent: on first
> responder, and in the previous OS would only send events while the user
> was touching and moving their fingers on the trackpad. Now it seems to
> send a whole stream of additional events which apear to interpolate
> between scale values, so as to implement a smoothly animated zoom.
>
> Problem is, this doesn't take into account what the view may be drawing -
> if it takes time to draw something complicated, the events start to
> seriously lag behind, and the usability of the pinch zoom becomes greatly
> compromised (as with any delay introduced into a feedback system, in this
> case between the hand and the eye, the result is
> 'pilot-induced-oscillation' where the user can't achieve the zoom level
> they want, but instead oscillate wildly around it).
>
> I don't have an option to reduce the complexity of what I draw (it's
> already massively optimised), so I need to fix the event handling. Is
> there a way to disable the interpolation? I can't see anything in system
> prefs. Maybe there's an API but I'm not sure where to look. Note that the
> older way this worked did work fine for my app, drawing the same thing.
Can you listen for NSScrollViewWillStartLiveMagnifyNotification to
freeze a snapshot of your existing drawing?
Is your view layer-backed? If not, perhaps you could consider doing
that, which would give you the opportunity to use the existing GPU cache
of your drawing.
--Kyle Sluder
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden