Mam problemy z setNeedsDisplay
. Myślałem, że to powinno wywoływać wywołania drawRect:
dla widoku, do którego jest wywoływane, i hierarchii poniżej, jeśli jest w granicach widoku, ale nie znajduję, żeby tak było. Oto moja konfiguracja:setNeedsDisplay nie wyzwala drawRect w subviews zgodnie z oczekiwaniami
Z delegata aplikacji utworzę widok, którego rozmiar to kwadrat obejmujący zasadniczo cały ekran nieruchomości. Ten widok nazywa się TrollCalendarView
. Niewiele się dzieje z TrollCalendarView
, z wyjątkiem obrotu wywołanego przez kompas.
Istnieje 7 subviews od TrollCalendarView
o nazwie PlatformView
przeznaczonych do zawierania obiektów 2D do rysowania rozmieszczonych wokół środka TrollCalendarView
w układzie 7-stronnym. Więc kiedy iPad jest obrócony, te 7 widoków obraca się tak, że są zawsze zorientowane zgodnie z kierunkami głównymi.
Każdy z subpopulacji PlatformView
zawiera 3 subviews o nazwie Tower
. Każda wieża zawiera obiekty 2D do rysowania zaimplementowane w drawRect:
.
Tak, w skrócie, mam TrollCalendarView
z pustym drawRect:
i subviews PlatformView
and Platformview
-> Wieża że każdy ma implementacje drawRect. Dodatkowo Wieża znajduje się w granicach Platformy, a Platforma znajduje się w granicach TrollCalendarView.
W TrollCalendarView
dodałem czytnik machnięcia. Po przeprowadzeniu operacji przeciągania właściwość jest aktualizowana, a ja dzwonię pod numer [self setNeedsDisplay]
, ale nic się nie dzieje. Dodałem wpisy NSLog do metody drawRect:
w każdym z tych widoków i wywoływana jest tylko metoda TrollCalendarView
drawRect:
. Jak na ironię, jest to jedyny widok, którego metoda drawRect
będzie pusta.
Brak pliku XIB.
Co należy zrobić, aby wywołać metodę drawRect
w innych subviewsach? Czy istnieje gdzieś dokumentacja opisująca wszystkie niuanse, które mogą mieć na to wpływ?
Mam ten pomysł z odpowiedzi na podobne pytania tutaj na stackoverflow. Po prostu wyszukaj podgląd podrzędny setNeedsDisplay dla próbek. Istnieje kilka. –
Pójdę za tą sugestią, chyba że nauczę się innej drogi. To przynajmniej pasuje do moich odkryć podczas testów. –
Istnieje niestety dużo hałasu na SO i wiele blind-the-blind. Pytania, na które patrzysz, mają bardzo mało głosów, więc prawdopodobnie niewiele osób je widziało lub miało szansę je poprawić. Jeśli dopiero zaczynasz, dokumenty Apple są o wiele bardziej niezawodne. –