NSPopover自动关闭

时间:2015-04-26 18:38:15

标签: cocoa swift nspopover

我有一个带有我的视图的xib和一个带有瞬态行为的NSPopover:

IB nspopover setup

在视图控制器中,我有一个动作来控制弹出窗口:

    @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也失去了箭头,这看起来很奇怪。

这是恼人的自动关闭

的录音

NSpopover annnoyingly closes itself

1 个答案:

答案 0 :(得分:3)

调用popoverShouldClose方法时查看堆栈跟踪。您将在堆栈跟踪中看到此原因,并从那里尝试消除此原因。

我怀疑的是,你的popover正在被解除分配,因为它并没有被你强烈占据。