Я создаю небольшое приложение в строке состояния, когда я щелкаю значок, он показывает NSPopover. Все работало нормально, пока я не перешел на El Capitan. Проблема в том, что когда я впервые запускаю приложение, я автоматически имитирую нажатие значка строки состояния, потому что я хочу увидеть всплывающее окно, и оно появляется в левом нижнем углу экрана. После того, как я закрою его и снова открою, он появляется в верхней части экрана. Вы видите что-то не так? Это код, и когда я печатаю значения в showPopover, в этом нет ничего плохого.
private let menu = MenuBarController()
override init() {
super.init()
self.menu.onMouseDown = {
if (self.menu.iconView?.isSelected == true) {
self.showPopover()
} else {
self.hidePopover()
}
}
}
func showPopover() {
let icon = self.menu.iconView!
let edge = NSRectEdge.MinY
let rect = icon.frame
self.popover?.showRelativeToRect(rect, ofView: icon, preferredEdge: edge);
}
func applicationDidFinishLaunching(aNotification: NSNotification) {
let icon = self.menu.iconView!
icon.mouseDown(NSEvent())
}
Кроме того, если я имитирую нажатие значка после небольшой задержки, это работает.