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 protected]) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
