Я пытаюсь сделать это, если пользователь щелкает значок меню, чтобы показать всплывающее окно, которое закрывается, если пользователь щелкает в любом месте, кроме всплывающего окна. Я установил переходное поведение, но это не то, что я думал.
Теперь, если пользователь щелкнет где-нибудь на всплывающем окне, переведя на него фокус, пользователь может щелкнуть где-нибудь еще на экране, и всплывающее окно закроется. Если бы я мог сфокусироваться на всплывающем окне, я думаю, это решило бы и мою проблему. К сожалению, я тоже не знаю, как это сделать.
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
}
}
Вот контроллер представления
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))
}
}