gpt4 book ai didi

swift - 工具提示不再显示

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:40 25 4
gpt4 key购买 nike

我有一个专门位于菜单栏上的 Mac 应用程序。它有一个进度条和一个标签。该标签显示正在执行的任务的进度百分比。我想在用户将鼠标指针悬停在进度指示器上时显示更多信息。

enter image description here

当我最初设置工具提示并将鼠标悬停在其上时,它显示没有问题。

但如果我前往某个地方并再次打开菜单应用程序并再次将鼠标悬停在上面,则不会出现工具提示。我不知道为什么。这是我的代码。

enter image description here

ProgressMenuController.swift

import Cocoa

class ProgressMenuController: NSObject {

@IBOutlet weak var menu: NSMenu!
@IBOutlet weak var progressView: ProgressView!

let menuItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)

var progressMenuItem: NSMenuItem!

override func awakeFromNib() {
menuItem.menu = menu
menuItem.image = NSImage(named: "icon")

progressMenuItem = menu.itemWithTitle("Progress")
progressMenuItem.view = progressView

progressView.update(42)
}

@IBAction func quitClicked(sender: NSMenuItem) {
NSApplication.sharedApplication().terminate(self)
}
}

ProgressView.swift

import Cocoa

class ProgressView: NSView {

@IBOutlet weak var progressIndicator: NSProgressIndicator!
@IBOutlet weak var progressPercentageLabel: NSTextField!

func update(value: Double) {
dispatch_async(dispatch_get_main_queue()) {
self.progressIndicator.doubleValue = value
self.progressIndicator.toolTip = "3 out of 5 files has been copied"
self.progressPercentageLabel.stringValue = "\(value)%"
}
}
}

这是一个类似于我的实际应用程序的演示应用程序。所以 update() 函数只被调用一次并且值是硬编码的。但在我实际的应用程序中,会定期跟踪进度,并调用 update() 函数来更新值。标签的百分比值和进度指示器的值可以毫无问题地更新。问题仅在于工具提示。

这是预期的行为还是我遗漏了什么?

最佳答案

我遇到了同样的问题,并意识到问题是只有当前获得焦点的窗口会显示工具提示,但在我的应用程序失去焦点后,它永远不会恢复。当用户单击您的窗口时,焦点通常会自动转移,但菜单栏应用程序不会自动转移。使用 NSApp.activate,您可以重新关注您的应用:

 override func viewWillAppear() {
super.viewWillAppear()
NSApp.activate(ignoringOtherApps: true)
}

关于swift - 工具提示不再显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33546948/

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