> On 29 Dec 2015, at 23:45, Ken Thomases <k...@codeweavers.com> wrote:
> 
> On Dec 29, 2015, at 5:44 AM, Graham Cox <graham....@bigpond.com> wrote:
>> 
>> On 29 Dec 2015, at 7:44 PM, Roland King <r...@rols.org> wrote:
>>> 
>>> I can subclass NSSlider or possibly NSSliderCell but that sounds like a 
>>> whole world of pain, if I have to do that I’ll probably just put a 
>>> coalescing delay into the whole thing which waits 1/2 second after an 
>>> update before it actually does the update. 
>>> 
>>> Any good ways to do this? 
>> 
>> In your action method, call another method that handles the final value 
>> using -performSelector:withObject:afterDelay: but just before you do that, 
>> call +[NSObject cancelPreviousPerformRequestsWithTarget:...] for the same 
>> message. This schedules a deferred message but immediately cancels it as 
>> long as the values come pouring in. On the last time, when you stop moving 
>> the slider, the final -performSelector will get to its target and do its 
>> work. The afterDelay parameter can be set to whatever value you think you’ll 
>> need to allow for a slowly moved slider NOT to fire the final message. I 
>> typically use 0.1sec.
> 
> This gives false positives if the user simply stops moving the mouse but 
> doesn't release the mouse button.  There's no delay you can specify that 
> avoids this, since there's no upper bound to how long the user can hold the 
> mouse button.  (With assistive technologies, the user doesn't even have to be 
> actually holding anything for the duration.)

 It shouldn't. performSelector:afterDelay: schedules using 
NSRunLoopDefaultMode, while the slider uses NSEventTrackingRunLoopMode. So it 
will never fire while the slider is still tracking. In fact, you could use 0.0 
as the delay.

Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://stacksmith.org





_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to