2009-05-08 4 views
4

можно ли зафиксировать положение nswindow? Я не прошу setIgnoresMouseEvents. Мне нужно запретить пользователю перемещать окно, но он все равно должен использовать nstoolbar.заблокировать положение nswindow

ТНХ заранее --molter

+1

не делайте этого. если вы пишете приложение типа киоска, следуйте инструкциям для написания приложений типа киосков. –

+0

что бы вы сделали вместо этого? на данный момент у меня есть какой-то _remote_ для управления окном (запустить процесс потоковой передачи, завершить его и т. д.) ... Я хочу уменьшить количество панелей, окон и представлений моего приложения, поэтому я подумал, что было бы неплохо иметь панель инструментов для управления окном ... – 2009-05-08 15:41:29

+1

Почему вы не хотите, чтобы пользователь перемещал панель инструментов в этом случае? Что, если они захотят переместить его в другое пространство или на другой экран? Что делать, если разрешение экрана изменяется, когда пользователь переводит свой ноутбук в новое место? –

ответ

1

Вы должны последовать совету Джейсона и использовать режим киоска. См. Это technical note на нем.

9

Я согласен с Джейсоном для «нормальных» случаев. Но я думаю, что есть особые ситуации, когда он может это сделать. Apple тоже так думает; начиная с 10.6 - все, что вам нужно сделать, это NSWindows вызова

- (void)setMovable:(BOOL)flag 

или переопределить

- (BOOL)isMovable; 

в вашем NSWindow-подклассе изменить окна подвижность.

Если это не доступно, Quartz Event Services API (documentation) предоставляет способы предотвращения перемещения окна. Одним из способов было бы установить прикосновение к событиям и манипулировать входящими событиями, чтобы содержать только начальное местоположение мыши, а не обновленное (реальное) местоположение, когда пользователь начинает перетаскивать окно.

+0

хорошо переносится на вопрос .. как вы думаете, новое изменение размера окна льва может работать как альтернатива хрустящим старым обработчикам событий кварца ... скажем, если бы кто-то хотел сжимать движение вдовы, скажем, только ОДНОЙ осью движения , например? –

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