Re: updating NSTextField before spinner animates
Re: updating NSTextField before spinner animates
- Subject: Re: updating NSTextField before spinner animates
- From: Graham Cox <email@hidden>
- Date: Thu, 13 Nov 2014 10:11:36 +1100
The right solution is, as Fritz mentioned, to design your code to work asynchronously. But for a quick-and-dirty solution to force a text field (or any other UI) to show a change straight away is to include the redraw directly yourself. This should not be done from a thread other than main however.
[_infoField setStringValue:@"hello world!"];
[[_infoField window] displayIfNeeded]; // processes view updates pending
// ..... some lengthy code that blocks the main thread, delaying normal updates .....
--Graham
> On 12 Nov 2014, at 7:58 pm, sqwarqDev <email@hidden> wrote:
>
>> On 11 Nov 2014, at 23:01, Fritz Anderson <email@hidden> wrote:
>
>> -needsDisplay schedules a view’s -drawRect: for the next pass through the runloop. You’re putting your process to sleep at the OS level, so the runloop is suspended along with everything else.
>>
>> What you posted is evidently a minimal case, and maybe, instead of sleep(), your lengthy method is called instead. Same principle: Unless that method runs asynchronously (or simulates asynchrony by doing its work piecewise on an NSTimer, or by periodically sending -runMode:beforeDate: to the runloop), the runloop never has the chance to dispatch view updates.
>
>
> Thanks for this Fritz. I think I get it. I need to get a clearer idea of how the run loop works. This isn't the first time I've been confused about why a line doesn't appear to return the result I expect before the next line executes. I suppose this is part of the difference between using traditonal procedural languages and these /new-fangled/ object-oriented ones... :~)
>
> I guess I've got some reading up to do! Thanks again.
_______________________________________________
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