gpt4 book ai didi

macos - NSPopover 不关闭

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:15 30 4
gpt4 key购买 nike

如果用户单击菜单图标以显示弹出窗口,如果用户单击弹出窗口以外的任何地方,弹出窗口将关闭,我将尝试这样做。我将行为设置为 transient ,但那不是我想的那样。

现在,如果用户单击弹出窗口的某处将焦点移至它,则用户可以单击屏幕上的其他位置,弹出窗口将关闭。如果我可以强制将焦点放在弹出窗口上,我认为这也可以解决我的问题。不幸的是我也不知道该怎么做。

class AppDelegate: NSObject, NSApplicationDelegate {

let view : NSView!
let statusItem: NSStatusItem
let popover: NSPopover
let button : NSButton!

override init() {

statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
if let statusButton = statusItem.button {
appStatusButton = statusButton
statusButton.image = NSImage(named: "icon128off")
statusButton.alternateImage = NSImage(named: "icon128")
statusButton.action = "onPress:"
}

popover = NSPopover()
popover.animates = false
popover.contentViewController = ViewController()
popover.behavior = .Transient
}


}

这是 View Controller

class ViewController: NSViewController, WKNavigationDelegate{

var webView : WKWebView!

override func loadView() {
view = NSView()
view.translatesAutoresizingMaskIntoConstraints = false
view.addConstraint(NSLayoutConstraint(
item: view, attribute: .Width, relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 580))
view.addConstraint(NSLayoutConstraint(
item: view, attribute: .Height, relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 425))

}
}

最佳答案

swift 5.1

问题是 PopOver 的窗口没有成为关键,要解决这个问题,只需在显示它之后强制它成为关键。例如假设 pop 是一个 NSPopOver:

pop.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
pop.contentViewController?.view.window?.makeKey()

关于macos - NSPopover 不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29612628/

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