gpt4 book ai didi

objective-c - Cocoa:拖放会给模式窗口带来问题

转载 作者:行者123 更新时间:2023-12-03 17:58:52 25 4
gpt4 key购买 nike

在 NSTableView 中拖放后,我正在运行一个模式窗口(我已经尝试过 beginModalSessionForWindow 和 runModalForWindow):

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

但是,模式窗口的 NSTextField 似乎不可用(它被“锁定”,我无法输入内容),直到我看到文件图标移回文件的 (mac OSX) 动画。然后就可以了。

我希望很清楚,模态窗口似乎正在中断拖放释放。

谢谢

最佳答案

这里的问题是,-tableView:acceptDrop:row:dropOperation: 需要在 Run Loop 为模式窗口进行调解之前返回。不幸的是,无论您使用哪种方法来放置模态,它都会改变运行循环,直到模态消失,这意味着系统会认为您仍然没有解决放置问题。最终,它会超时,水滴会弹回来(这就是您所看到的)。

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

关于objective-c - Cocoa:拖放会给模式窗口带来问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com