2016-04-25 2 views
0

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

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

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

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

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

[alert runModal]; 
+0

'NSApplication' имеет свойство' modalWindow'. – Willeke

+0

Спасибо, Вилле. Это именно то, что мне нужно. –

ответ

0

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

if([NSApp modalWindow]) { 
    ... 
}