2015-02-10 2 views
0

Независимо от того, кажется, что мои NSScrollViews всегда отображаются поверх любого другого вида, даже если другое представление было добавлено совсем недавно и должно появиться сверху.NSScrollView всегда появляется поверх других видов.

Что я могу сделать, чтобы открыть другой вид (скажем, простой NSView), который появится над NSScrollView?

ответ

1

я, наконец, решить эту установив setWantsLayer в YES (true в этом случае, так как я использую RubyMotion) в NSScrollView, представлении контента NSScrollView и внешнем представлении, которое я хочу отобразить над NSScrollView.

Это решило мою проблему и разрешило появление других представлений над NSScrollView.

-1

Итак, проверьте свой xib и убедитесь, что ваш scrollview находится в верхней части иерархии вашего представления («Структура документа»). Однако при загрузке это не обязательно 100% гарантирует, что scrollview будет нарисовано первым. Способ ручного форсирования заказа, который вам нужен для ваших представлений, заключается в программном перемещении их вокруг с помощью тегов.

В Interface Builder в Инспекторе атрибутов перейдите в нижнюю часть и найдите раздел «Вид». Добавьте тег в представление, при этом 0 - это самый нижний вид, который вам нравится, и поднимайтесь оттуда.

Затем в контроллере, добавить определение метода & исходящий вызов к нему:

NSComparisonResult compareViews(id firstView, id secondView, void *context) { 
    NSInteger firstTag = [firstView tag]; 
    NSInteger secondTag = [secondView tag]; 

    if (firstTag == secondTag) { 
     return NSOrderedSame; 
    } else { 
     if (firstTag < secondTag) { 
     return NSOrderedAscending; 
     } else { 
     return NSOrderedDescending; 
     } 
    } 
} 

[self.view sortSubviewsUsingFunction:(NSComparisonResult (*)(id, id, void*))compareViews context:nil]; 

Это будет гарантировать, что у вас есть свои мнения в правильном порядке, вы хотите