如何在打开在线网页的 NSAlert 中放置一个问号按钮?
How to place a question mark button in a NSAlert that opens an online web page?
编辑:我的问题不是很清楚,现在我编辑了它以明确我需要打开在线网页而不是帮助手册。
我想在指向带有帮助资源的在线网页的 macOS 项目的 NSAlert 中包含一个问号按钮。
我看到here有两种可能:
var showsHelp: Bool Specifies whether the alert has a help button.
var helpAnchor: String? The alert’s HTML help anchor.
但我不知道如何实现它。
我使用这个代码:
@IBAction func buttonPressed(_ sender: Any) {
let myAlert: NSAlert = NSAlert()
myAlert.messageText = "Message"
myAlert.informativeText = "Informative text."
myAlert.showsSuppressionButton = true
myAlert.addButton(withTitle: "Later")
myAlert.addButton(withTitle: "Now")
myAlert.addButton(withTitle: "OK")
let choice = myAlert.runModal()
switch choice {
case NSAlertFirstButtonReturn:
print ("OK")
case NSAlertSecondButtonReturn:
print ("Now")
case NSAlertThirdButtonReturn:
print ("Later")
default: break
}
if myAlert.suppressionButton!.state == 1 {
print ("Checked")
} else {
print ("Not checked")
}
}
使用 helpAnchor
属性 设置帮助锚点,可以重定向到文档或网站中的某个部分。
var helpAnchor
The alert’s HTML help anchor.
https://developer.apple.com/reference/appkit/nsalert/1534314-helpanchor
示例:
var alert = NSAlert()
alert.messageText = "Testing"
alert.helpAnchor = "https://google.com"
alert.showsHelp = true
alert.runModal()
那是行不通的,因为 URL 没有设置为帮助手册,要设置它请看:
打开外部网站:
请注意,内置问号按钮仅支持打开内置帮助 window,不支持 Internet 浏览器。如果你想在网络浏览器中打开,你必须创建一个完整的自定义 NSAlert
并提供你自己的 accessoryView
:
您应该使您的控制器 class 符合 NSAlertDelegate
。
然后,设置 myAlert.delegate = self
和 myAlert.showsHelp = true
.
在你的控制器 class 中,实现 func alertShowHelp(_ alert: NSAlert) -> Bool
做任何你想做的事。
一般来说,要在用户的默认浏览器中打开 URL,请使用 NSWorkspace
及其 open()
方法。
编辑:我的问题不是很清楚,现在我编辑了它以明确我需要打开在线网页而不是帮助手册。
我想在指向带有帮助资源的在线网页的 macOS 项目的 NSAlert 中包含一个问号按钮。
我看到here有两种可能:
var showsHelp: Bool Specifies whether the alert has a help button.
var helpAnchor: String? The alert’s HTML help anchor.
但我不知道如何实现它。
我使用这个代码:
@IBAction func buttonPressed(_ sender: Any) {
let myAlert: NSAlert = NSAlert()
myAlert.messageText = "Message"
myAlert.informativeText = "Informative text."
myAlert.showsSuppressionButton = true
myAlert.addButton(withTitle: "Later")
myAlert.addButton(withTitle: "Now")
myAlert.addButton(withTitle: "OK")
let choice = myAlert.runModal()
switch choice {
case NSAlertFirstButtonReturn:
print ("OK")
case NSAlertSecondButtonReturn:
print ("Now")
case NSAlertThirdButtonReturn:
print ("Later")
default: break
}
if myAlert.suppressionButton!.state == 1 {
print ("Checked")
} else {
print ("Not checked")
}
}
使用 helpAnchor
属性 设置帮助锚点,可以重定向到文档或网站中的某个部分。
var helpAnchor The alert’s HTML help anchor. https://developer.apple.com/reference/appkit/nsalert/1534314-helpanchor
示例:
var alert = NSAlert()
alert.messageText = "Testing"
alert.helpAnchor = "https://google.com"
alert.showsHelp = true
alert.runModal()
那是行不通的,因为 URL 没有设置为帮助手册,要设置它请看:
打开外部网站:
请注意,内置问号按钮仅支持打开内置帮助 window,不支持 Internet 浏览器。如果你想在网络浏览器中打开,你必须创建一个完整的自定义 NSAlert
并提供你自己的 accessoryView
:
您应该使您的控制器 class 符合 NSAlertDelegate
。
然后,设置 myAlert.delegate = self
和 myAlert.showsHelp = true
.
在你的控制器 class 中,实现 func alertShowHelp(_ alert: NSAlert) -> Bool
做任何你想做的事。
一般来说,要在用户的默认浏览器中打开 URL,请使用 NSWorkspace
及其 open()
方法。