2012-03-09 56 views
0

我运行一个模式窗口(我都试过beginModalSessionForWindow和runModalForWindow),之后在NSTableView的一个拖放:可可:拖放创建问题,一个模式窗口

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

然而,模式窗口的NSTextField似乎不可用(它“锁定”,我无法输入它),直到看到文件图标的(mac OSX)动画移回文件。然后它工作。

我希望它很清楚,似乎模式窗口正在中断拖放版本。

感谢

回答

1

这里的问题是,-tableView:acceptDrop:row:dropOperation:需要返回运行循环的代祷模态窗口前。不幸的是,不管用哪种方法来建立模态,它都会改变运行循环,直到模态消失,这意味着系统会认为你仍然没有解决掉。最终,它会超时,下降会回弹(这就是你所看到的)。

解决此问题的一种方法是发送自己一条消息,以便很快放置窗口,但不在此运行循环中(使用-performSelector:withObject:afterDelay:)。由于您已经在主线程中,因此您将在主线程中使用定时器之后请求延迟后安排回调,以便您做出响应。

相关问题