Скрыть дочерние элементы управления в NSView - PullRequest
1 голос
/ 22 февраля 2011

У меня есть NSView с несколькими дочерними элементами управления.Я знаю, что могу вызвать [childControl setHidden: TRUE], но мне было интересно, можно ли заблокировать сообщение «drawRect:» для дочерних элементов управления.

Я заметил, что не вызов [super drawRect: NSZeroRect] в NSView не влияет на дочерние элементы управления.Итак, мой вопрос: кто вызывает дочерние элементы управления сообщением drawRect?И если есть способ его заблокировать.

Спасибо, Хосе.

1 Ответ

0 голосов
/ 23 февраля 2011

Каждый раз, когда элементы управления должны реагировать оптически, они снова рисуют его вид. Если вы действительно хотите решить эту проблему подобным образом, вы можете создать для каждого элемента управления подкласс и добавить код, подобный следующему:

-(void)drawRect:(NSRect)rect {
if (!self.blocked) {
[super drawRect:rect];
}
}

Свойство "заблокировано" - это логическое значение, для которого необходимо установить значение ДА или НЕТ, если вы хотите его заблокировать. Примечание. Чтобы полностью скрыть его, подкласс управления должен быть заблокирован перед тем, как он впервые отрисовывает себя.

...