我有一个带有我的 View 的 xib 和一个具有 transient 行为的 NSPopover:
在 View Controller 中,我有一个操作来控制弹出窗口,如下所示:
@IBAction func moreClicked(sender: NSButton) {
if !moreOpen {
moreOpen = true
scriptsPopover.showRelativeToRect(sender.bounds, ofView: sender, preferredEdge: 2)
} else {
moreOpen = false
scriptsPopover.close()
}
}
当我单击按钮时,弹出窗口将按预期显示。但5秒后就消失了。
我希望弹出窗口显示多个按钮,并且仅当用户单击其中一个按钮或单击 UI 中的其他位置时才消失。像Interface Builder中的Autolayout Pin按钮举个例子。
我尝试将行为定义为 transient 、半 transient 、应用程序定义。所有这些都有完全相同的结果:几秒钟后它会自行消失。
我尝试实现 popoverShouldClose 委托(delegate)并返回 false 以让我控制它。它确实阻止了关闭,但是当用户单击按钮关闭时,它只是在旧弹出窗口之上打开一个新弹出窗口。当我从 popoverShouldClose 返回 false 后,弹出窗口也会丢失箭头,这看起来很奇怪。
这是烦人的自动关闭的录音
最佳答案
调用 popoverShouldClose
方法时查看堆栈跟踪。您将在该堆栈跟踪中看到导致此问题的原因,并从那里尝试消除此原因。
我怀疑你的弹出窗口正在被释放,因为它没有被你牢牢地持有。
关于cocoa - NSPopover 自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881842/