2015-10-17 6 views
5

私は小さなステータスバーのアプリを構築しています、アイコンをクリックすると、NSPopoverが表示されます。私がエル・キャピタンにアップグレードするまで、すべてはうまくいきました。問題は、私が最初にアプリケーションを起動するとき、私はポップオーバーを見たいので、私はステータスバーのアイコンを自動的に押して、画面の左下隅に表示されます。私はそれを閉じて再び開いて、画面の上から問題なく表示されます。あなたは間違ったことを見ますか?これは、コードであると私はshowPopoverの値を印刷するとき、私はそれが動作する小さな遅延の後にアイコンプレスをシミュレートする場合は何も間違っては、NSPopover時には、間違った位置、エルキャピタン

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()) 
} 

もありません。

答えて

0

私はこの同じ問題を抱えていました。遅延を必要としない別のソリューションを発見しました。

func applicationDidFinishLaunching(aNotification: NSNotification) { 
    showPopover() // If you only have this, then popover will open in bottom left corner 

    hidePopover() // Adding this 
    showPopover() // and this will open it from the status bar button. 
} 
関連する問題