Другой способ - использовать метод NSView sortSubviewsUsingFunction: context: , чтобы переупорядочить коллекцию родственных представлений по своему вкусу. Например, определите вашу функцию сравнения:
static NSComparisonResult myCustomViewAboveSiblingViewsComparator( NSView * view1, NSView * view2, void * context )
{
if ([view1 isKindOfClass:[MyCustomView class]])
return NSOrderedDescending;
else if ([view2 isKindOfClass:[MyCustomView class]])
return NSOrderedAscending;
return NSOrderedSame;
}
Затем, когда вы хотите, чтобы ваш пользовательский вид оставался выше всех родственных видов, отправьте это сообщение в суперпредставление вашего пользовательского представления:
[[myCustomView superview] sortSubviewsUsingFunction:myCustomViewAboveSiblingViewsComparator context:NULL];
Кроме того, вы можете переместить этот код в само суперпредставление и отправить вместо него сообщение sortSubviewsUsingFunction: context: to self .