我正在努力與setNeedsDisplay
。我認爲它應該觸發調用drawRect:
來調用它的視圖以及下面的層次,如果它在視圖的範圍內,但我不認爲是這種情況。這是我的設置:setNeedsDisplay不會按預期在子視圖中觸發drawRect
從應用程序委託,我創建一個視圖,其大小是一個正方形,基本上涵蓋整個屏幕的房地產。這個視圖被稱爲TrollCalendarView
。 TrollCalendarView
除了由指南針觸發的旋轉之外沒有太多的事情發生。
有7個子視圖TrollCalendarView
調用PlatformView
打算包含圍繞TrollCalendarView
中心排列在7邊排列中的2D繪圖對象。因此,當iPad旋轉時,這7個視圖會旋轉,因此它們總是以基本方向爲導向。
每個PlatformView
子視圖都包含3個子視圖Tower
。每個塔包含在drawRect:
中實現的2D繪圖對象。
因此,總的來說,我有TrollCalendarView
空drawRect:
,和子視圖PlatformView
和Platformview
- >塔,每個具有的drawRect實現。此外,Tower位於Platform的範圍內,Platform位於TrollCalendarView的範圍內。
在TrollCalendarView
我已經添加了滑動識別器。當我滑動發生,一個屬性更新,我打電話[self setNeedsDisplay]
但似乎沒有發生。我在這些視圖中的每一個視圖中都添加了NSLog條目到drawRect:
方法,並且只調用了TrollCalendarView
drawRect:
方法。具有諷刺意味的是,這是一個視圖,其方法將是空的。
沒有xib文件。
我需要做些什麼來確保其他子視圖中的drawRect
方法被調用?是否有文檔介紹可能會影響到這一切的所有細微差別?
我從類似的問題的答案在這裏在stackoverflow得到了這個想法。只需搜索子視圖setNeedsDisplay以獲取樣本。有幾個。 – 2012-07-14 13:18:45
我會遵循這個建議,除非我學到另一種方法。它至少符合我在測試中的發現。 – 2012-07-14 13:51:03
不幸的是,在SO和很多盲人領先的盲人中存在很多噪音。你看到的問題只有很少的選票,所以可能沒有多少人看到他們或有機會改正他們。如果您剛開始使用,Apple文檔更可靠。 – 2012-07-14 16:24:14