我有一个使用 Xcode 8 中的向导创建的 NSDocuments 和故事板应用程序。在 ViewController 场景中,我添加了一个 NSTextView。某些菜单项被禁用,例如粗体和斜体。
看着 First Responder,粗体和斜体的动作不存在。我应该自己编写这些方法吗?这是由于未正确设置响应者链吗?为什么下划线显示但不加粗?
编辑:添加图像以显示如何使用检查器栏编辑文本,但“格式”菜单未显示我期望的命令。
我有一个使用 Xcode 8 中的向导创建的 NSDocuments 和故事板应用程序。在 ViewController 场景中,我添加了一个 NSTextView。某些菜单项被禁用,例如粗体和斜体。
看着 First Responder,粗体和斜体的动作不存在。我应该自己编写这些方法吗?这是由于未正确设置响应者链吗?为什么下划线显示但不加粗?
编辑:添加图像以显示如何使用检查器栏编辑文本,但“格式”菜单未显示我期望的命令。
这个问题有一个历史(?)原因。当在 xib 文件中创建主菜单时,xib 文件自动包含一个 NSFontManager 实例,并且像 Bold 这样的菜单项连接到它。然而,在现代故事板中,没有预设 NSFontManager 实例。
那么,您可以按照以下步骤将它们手动连接到 FontManager。
addFontTrait(_:)
fontManager 的操作。同样,将“较大”和“较小”项目连接到modifyFont(_:)
.
您还需要设置 menuItems 的标签,但它们实际上已经设置好了。仅当 menuItem 的标签为 时,也手动设置对应的标签0
。
如果您 ctrl 从菜单项拖动到第一响应者,在菜单视图中,您将获得相同的选项,只需 ctrl 单击。然后你实现你刚刚连接的任何功能。如果您将 File > New 连接到 newDocument 并在您的 ViewController 中实现
func newDocument(_ sender: Any?){
print("func newDocument(_ sender: Any? \(String(describing: sender)))")
}
它会被调用。第一响应者列出了所有与添加的对象相同的方法,其中 NSFontManager 作为类。我不在方法前面使用@IBAction,因为我没有连接它。