使用 NSFontManager 获取用户选择的 NSFont - 无法覆盖 changefont 功能

Get user selected NSFont using NSFontManager - Unable to override changefont function

我正在尝试允许用户使用 NSFontManager select 选择 his/her 的字体。我可以使用以下代码显示字体选择器

@IBAction func fontchangeclicked(_ sender: Any) {
            NSFontManager.shared.orderFrontFontPanel(nil)
    
        }

但是 NSViewController 无法识别这个被覆盖的函数。

override func changefont(_ sender: Any?) {
        guard let fontManager = sender as? NSFontManager else {
                    return
                }
                let newFont = fontManager.convert(self.globalfont)
                self.globalfont = newFont
       
               }

要求列表:

  1. 它是 changeFont 而不是 changefont
  2. NSObject.changeFont(_:) 已弃用,请改用 NSFontChanging.changeFont(_:)
  3. 视图控制器必须采用NSFontChanging
  4. 当第一响应者对象处理 changeFont(_:) 时,您的 changeFont(_:) 不会被调用。
class ViewController: NSViewController, NSFontChanging {

    func changeFont(_ sender: NSFontManager?) {
        guard let fontManager = sender else {
            return
        }
        let newFont = fontManager.convert(self.globalfont)
        self.globalfont = newFont
    }
               
}