我有一个带有我的视图的xib和一个带有瞬态行为的NSPopover:
在视图控制器中,我有一个动作来控制弹出窗口:
@IBAction func moreClicked(sender: NSButton) {
if !moreOpen {
moreOpen = true
scriptsPopover.showRelativeToRect(sender.bounds, ofView: sender, preferredEdge: 2)
} else {
moreOpen = false
scriptsPopover.close()
}
}
当我点击我的按钮时,弹出按预期显示。但是5秒后它消失了。
我希望popover显示多个按钮,只有当用户点击其中一个按钮或点击UI中的其他位置时,该按钮才会消失。就像Interface Builder中的Autolayout Pin按钮一样,提一个例子。
我尝试将行为定义为瞬态,半瞬态,应用程序定义。所有这些都有完全相同的结果:它在几秒钟后自我消失。
我尝试实现popoverShouldClose委托并返回false以让我控制它。它会阻止关闭,但当用户点击按钮关闭时,它只会在旧版本上打开一个新弹出窗口。从popoverShouldClose返回false后,popover也失去了箭头,这看起来很奇怪。
这是恼人的自动关闭
的录音
答案 0 :(得分:3)
调用popoverShouldClose
方法时查看堆栈跟踪。您将在堆栈跟踪中看到此原因,并从那里尝试消除此原因。
我怀疑的是,你的popover正在被解除分配,因为它并没有被你强烈占据。