4

编辑:我的问题不是很清楚,现在我对其进行了编辑,以明确我需要打开一个在线网页而不是帮助手册。

我想在 macOS 项目的 NSAlert 中包含一个问号按钮,该按钮指向带有帮助资源的在线网页。

我在这里看到有两种可能性:

var showsHelp: Bool 指定警报是否有帮助按钮。

var helpAnchor:字符串?警报的 HTML 帮助锚点。

但我不知道如何实现它。

我使用这段代码:

@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")
    }

}
4

2 回答 2

3

您应该使您的控制器类符合NSAlertDelegate.
然后,设置myAlert.delegate = selfmyAlert.showsHelp = true
在您的控制器类中,执行func alertShowHelp(_ alert: NSAlert) -> Bool您喜欢的任何操作。

通常,要在用户的默认浏览器中打开 URL,请使用NSWorkspace及其open()方法。

于 2017-05-07T20:37:39.597 回答
0

使用该helpAnchor属性设置帮助锚点,它可以重定向到文档或网站中的某个部分。

var helpAnchor 警报的 HTML 帮助锚点。 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 未设置为帮助手册,设置请参见:

https://developer.apple.com/library/content/documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/using_ah_functions/using_ah_functions.html

打开外部网站:

https://developer.apple.com/library/content/documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/authoring_help/authoring_help_book.html#//apple_ref/doc/uid/TP30000903-CH206-CIHEAADH

请注意,内置问号按钮仅支持打开内置帮助窗口,不支持打开互联网浏览器。如果你想在网络浏览器中打开,你必须创建一个完整的自定义NSAlert并提供你自己的accessoryView

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Dialog/Articles/CustomAlertDialogs.html

于 2017-05-07T15:35:26.497 回答