2013-01-31 2 views
0

Окно NSPanel всегда находится поверх всех других окон приложений. Это, как я загрузить его:NSPanel всегда поверх всех других окон приложения

[NSApp beginSheet:[self window] modalForWindow:[rootDocument mainWindow] modalDelegate:self didEndSelector:nil contextInfo:nil]; 

Я попытался изменить уровень с setLevel: и различными типами уровней, или с помощью orderBack: или orderFront:. Но кажется, что эти методы не действуют, поскольку окно всегда сверху.

благодарит

ответ

1

Вы не сдавшие nil, Nil, 0, или NULL к didEndSelector. Когда-либо. Вы передаете селектор методу (-sheetDidClose:returnCode:contextInfo:), который вы указали. То, что вы передаете нечто иное, чем селектор, делает все, что вы делаете, чтобы уволить подозреваемого листа. (Вы не сказали, что панель остается наверху, потому что она никогда не увольняется, но это мое предположение здесь.)

Посмотрите на Using Custom Sheets, который является собственной документацией Apple по этому вопросу.

Кроме того, убедитесь, что панель, которую вы используете, имеет флаг «Visible At Launch», выключенный в IB.

+0

Нет, панель правильно увольняется, когда операция завершена. Но во время работы панель остается поверх всех приложений, поэтому я указал, что пытался использовать orderBack и orderFront. – aneuryzm

+0

Вам не нужно прибегать к возиться с z-порядком панели. Когда вы вызываете '-beginSheet: modalForWindow: modalDelegate: didEndSelector: contextInfo:', ваш лист ведет себя модально, что означает, что он должен * быть на вершине, но только над окном, к которому он прикреплен (то есть к документам-модальным). Когда ваш лист активен, он * * прикреплен к окну, правильно? – trudyscousin

+0

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

Смежные вопросы