私はに苦労していsetNeedsDisplayます。drawRect:ビューの範囲内にある場合は、呼び出されたビューとその下の階層の呼び出しをトリガーすることになっていると思いましたが、そうではありません。これが私の設定です:
アプリケーションデリゲートから、基本的に画面全体をカバーする正方形のサイズのビューを作成します。このビューはと呼ばれTrollCalendarViewます。TrollCalendarViewコンパスによってトリガーされる回転を除いて、発生することはあまりありません。
の中心の周りに7面の配置で配置された2D描画オブジェクトを含むことを目的としたTrollCalendarViewcalledの7つのサブビューがあります。したがって、iPadを回転させると、これらの7つのビューは、常に基本的な方向を向くように回転します。PlatformViewTrollCalendarView
各サブビューには、PlatformViewと呼ばれる3つのサブビューが含まれていますTower。各タワーには、で実装された2D描画オブジェクトが含まれていdrawRect:ます。
したがって、要約TrollCalendarViewすると、空drawRect:の、サブビューPlatformView、およびPlatformview-> Towerがあり、それぞれにdrawRect実装があります。さらに、TowerはPlatformの範囲内にあり、PlatformはTrollCalendarViewの範囲内にあります。
にTrollCalendarViewスワイプレコグナイザーを追加しました。スワイプが発生すると、プロパティが更新され、呼び出します[self setNeedsDisplay]が、何も起こらないようです。drawRect:これらの各ビューのメソッドにNSLogエントリを追加すると、TrollCalendarView drawRect:メソッドのみが呼び出されます。皮肉なことに、それはdrawRectメソッドが空になる1つのビューです。
xibファイルはありません。
drawRect他のサブビューのメソッドが呼び出されるようにするには、何をする必要がありますか?これに影響を与える可能性のあるすべてのニュアンスを説明するドキュメントがどこかにありますか?