• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Removing/Adding views in drawRect:
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Removing/Adding views in drawRect:


  • Subject: Re: Removing/Adding views in drawRect:
  • From: "Mike R. Manzano" <email@hidden>
  • Date: Thu, 31 Aug 2006 11:05:54 -0700

Hi all,

Thanks for the replies thus far. I suppose I wasn't specific enough with my question. Here's what seems to be fouling up my app:

(1) I start resizing my window.
(2) The window resize causes NSTextViews to resize in response.
(3) This forces the text within the text views to do a re-layout.
(4) In response to the re-layout, my delegates add/remove NSTextViews to accommodate the new text layout.


It seems that somewhere in here things are getting all fouled up. The NSTextViews don't render properly. Is what I'm doing bad?

I seemed to have gotten around this problem by:

(A) Having the subview that arranges the view not pay attention to frame resizes, but instead a special notification that I post myself.
(2) Posting this special notification in the parent view's viewDidEndLiveResize, and also in my window's zoom:.
(iii) For whatever reasons, views still seemed to get fouled up until, in my layoutManager:didCompleteLayoutForTextContainer:atEnd: delegate method, I deferred my NSTextView addition/removal thusly:


// [ self appendOneTextView ] ;
[ self performSelector:@selector( appendOneTextView ) withObject:nil afterDelay:0.0f ] ;



This seems to workn consistently, but:

(x) (obviously) live resize is now ugly, because my views don't refresh until AFTER the live resize is finished
(x+1) I have no clue why I had to defer appendOneTextView, which makes me uneasy.




I hope that wasn't too detailed. Any thoughts?


~ Mike alephx01 (at) mac (dot) com





On Aug 30, 2006, at 9:58 PM, Andrew Merenbach wrote:

Hi, Mike. In regard to (2), you may wish to do something like (in accordance with Uli's suggestion) in the class that handles the adding and removing of subviews:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addOrRemoveSubviewsDuringResize:) name:NSWindowDidResizeNotification object:myWindow];

This will cause -addOrRemoveSubviewsDuringResize: to be called whenever the pixel dimensions of myWindow change. Change the observer if you need a different object to handle the adding or removing of subviews.

Cheers,
	Andrew

On Aug 30, 2006, at 1:56 PM, Uli Kusterer wrote:

Am 30.08.2006 um 20:40 schrieb Mike R. Manzano:
(1) Is it prudent to add or remove subviews in drawRect:?

No. Moving views can cause a view to be invalidated, which would cause drawRect: to be called again. If you search the list archives you'll se epostings from lots of people who did it anyway and got hilarious endless loops, dropped updates and other odd behaviour.


If not,

(2) Is it prudent to add or remove views somewhere else during a window live resize?

I think there's a notification sent when auto-resizing happens. Alternatively, you could just override that method (don't remember the name, but a quick read of NSView.h should make it obvious) that's called when a superview is resized and asked to resize its subviews. That should be a safe place to show/hide subviews before calling through to super.


Cheers,
-- M. Uli Kusterer
http://www.zathras.de


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40ucla.edu


This email sent to email@hidden


_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >Removing/Adding views in drawRect: (From: "Mike R. Manzano" <email@hidden>)
 >Re: Removing/Adding views in drawRect: (From: Uli Kusterer <email@hidden>)
 >Re: Removing/Adding views in drawRect: (From: Andrew Merenbach <email@hidden>)

  • Prev by Date: Re: Newbie: window resize aloud with code?
  • Next by Date: NSMenu and the view it is a menu of
  • Previous by thread: Re: Removing/Adding views in drawRect:
  • Next by thread: Newbie: window resize aloud with code?
  • Index(es):
    • Date
    • Thread