setNeedsDisplay работает на iPhone, но не на iPad - PullRequest
1 голос
/ 04 ноября 2011

Представление, о котором идет речь, было создано в IB в корневом представлении и связано с методом класса в rootViewController.В методе класса представления я переопределяю drawRect, чтобы нарисовать его содержимое.Я вызываю setNeedsDisplay для представления из rootViewController после того, как пользователь изменяет некоторые параметры.

На iPhone это работает нормально.Однако на iPad метод drawRect в классе не вызывается.

Я подозреваю, что причина этого связана с циклом рисования.На iPhone вид, используемый пользователем для изменения параметров, помещается на экран поверх рассматриваемого вида.На iPad это представление добавляется к корневому представлению выше, а не поверх рассматриваемого представления.Поэтому, когда представление, используемое для изменения параметров, закрыто, в отличие от iPhone, цикл рисования не генерируется, и поэтому недействительный вид не обновляется.Любая помощь будет признательна.

1 Ответ

1 голос
/ 08 ноября 2011

Нашел проблему ...

Я обнаружил, что в xib, используемом корневым контроллером представления для iPad, проводка для рассматриваемого объекта UIView была несколько повреждена. Когда я наведу курсор мыши на его переменную iIBOutlet в файле .h, вместо предполагаемого UIView будет выбран UISegmentedControl в другом месте xib. Щелчок правой кнопкой мыши по UISegmentedControl не показал, что ссылка существует. Единственный способ, которым я смог это исправить, - это снять всю проводку с обоих объектов и правильно перемонтировать их. Вызов setNeedsDisplay теперь работает. как и ожидалось, на iPad, как и на iPhone.

...