2015-10-17 23 views
5

Tôi đang xây dựng một ứng dụng thanh trạng thái nhỏ, khi tôi nhấp vào biểu tượng nó cho thấy một NSPopover. Tất cả làm việc tốt cho đến khi tôi nâng cấp lên El Capitan. Vấn đề là khi tôi lần đầu tiên khởi động ứng dụng, tôi mô phỏng biểu tượng thanh trạng thái tự động nhấn vì tôi muốn xem cửa sổ bật lên và nó xuất hiện ở góc dưới bên trái của màn hình. Sau khi tôi đóng nó và mở lại nó xuất hiện ngay từ đầu màn hình. Bạn có thấy điều gì sai không? Đây là mã và khi tôi in các giá trị trong showPopover thì không có gì sai.NSPopover sai vị trí đôi khi, trong El Capitan

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

Ngoài ra, nếu tôi mô phỏng biểu tượng nhấn sau một thời gian trễ nhỏ nó hoạt động.

Trả lời

0

Tôi cũng gặp vấn đề tương tự. Chỉ cần phát hiện ra một giải pháp khác mà không đòi hỏi một sự chậm trễ.

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. 
} 
Các vấn đề liên quan