Как отключить все операции перетаскивания, когда NSAlert отображается в виде модального окна

У меня есть NSWindow с пользовательским NSView. Этот пользовательский метод NSView переопределяет метод PerformDragOperation. Операции перетаскивания работают хорошо. Но когда я создаю и показываю NSAlert как модальное окно, мне нужно блокировать перетаскивание, метод PerformDragOperation не должен вызываться.

NSAlert *alert = [[NSAlert alloc]init];
[alert addButtonWithTitle:@"Excellent"];
[alert setMessageText:@"This is your message."];
[alert runModal];

Одним из возможных решений является добавление кода, который проверяет, отображается ли диалоговое окно для метода executeDragOperation. Но как определить, отображается ли NSAlert. Например, для листа я могу использовать:

if([window attachedSheet]) {
   ...
}

Но как это сделать для

[alert runModal];

person Victor.V    schedule 25.04.2016    source источник
comment
NSApplication имеет свойство modalWindow.   -  person Willeke    schedule 26.04.2016
comment
Спасибо Виллеке. Это именно то, что мне нужно.   -  person Victor.V    schedule 26.04.2016


Ответы (1)


Согласно комментариям Виллеке, чтобы определить, запущено ли какое-либо оповещение, можно использовать следующий код:

if([NSApp modalWindow]) { 
  ...
}
person Victor.V    schedule 26.04.2016