Какао: перетаскивание создает проблемы в модальное окно - PullRequest
0 голосов
/ 09 марта 2012

Я запускаю модальное окно (я пробовал как beginModalSessionForWindow, так и runModalForWindow) после перетаскивания в NSTableView:

(BOOL)tableView:(NSTableView*)tableView acceptDrop:(id <NSDraggingInfo>)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)dropOperation
{
   //launch modal window
}

Однако NSTextField модального окна кажется недоступным (оно «заблокировано», я не могу набрать его) до тех пор, пока не вижу (Mac OSX) анимацию значка файла, возвращающегося к файлу. Тогда это работает.

Надеюсь, это понятно, кажется, что модальное окно прерывает выпуск перетаскивания.

Спасибо

1 Ответ

1 голос
/ 09 марта 2012

Проблема здесь в том, что -tableView:acceptDrop:row:dropOperation: необходимо вернуть до того, как цикл выполнения заменит модальное окно. К сожалению, независимо от того, какой метод вы используете для установки модального режима, он будет изменять цикл выполнения до тех пор, пока модальный режим не исчезнет, ​​что означает, что система будет думать, что вы все еще не разрешили сброс. В конце концов, время истечет, и падение вернется (это то, что вы видите).

Один из способов решения этой проблемы - отправить себе сообщение, чтобы вскоре открыть окно, но не в этом цикле выполнения (используя -performSelector:withObject:afterDelay:). Так как вы уже находитесь в главном потоке, он запланирует обратный вызов после запрошенной задержки, используя таймер в основном потоке, что позволит вам ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...