【问题标题】:How to tell if NSWindow is being used to browse document versions (right side of version browser UI)如何判断 NSWindow 是否用于浏览文档版本(版本浏览器 UI 的右侧)
【发布时间】:2018-02-27 16:21:23
【问题描述】:

OS X 文档版本浏览器(从文件 > 恢复到 > 浏览所有版本)在左侧显示当前版本,在右侧显示旧版本堆栈。

左侧的窗口控制器会收到通知,让您知道它正在进入/退出版本浏览模式。左侧的文档也返回true。回复isBrowsingVersions

但我不知道如何判断我的窗口何时用于显示实际版本之一(左侧的堆栈)。这些窗口不会收到进入/退出通知,并且他们的文档会回复false toisBrowsingVersions`。在版本浏览器 UI 中确定窗口是否用于显示旧版本文档的推荐方法是什么?

目前我发现的两种方法是:

  1. NSDocumentController.documents 似乎不包含那些浏览版本的文档。

  2. 浏览的版本文档文件URL以file:///.DocumentRevisions开头。

是否有更好的更受支持/直接的方法来确定我的窗口是否正在浏览旧文档版本?在这种情况下,我需要更改一些 UI 行为。

【问题讨论】:

    标签: swift cocoa nswindow nsdocument versions


    【解决方案1】:

    发布后几分钟,才发现这一点。答案是右侧的文档在询问isInViewingMode时会返回true

    【讨论】:

    • 阅读developer.apple.com/documentation/appkit/nsdocument/… 的文档,这看起来并不可靠。版本浏览器只是您的文档将为 isInViewingMode 返回 true 的特定情况之一。我想这对于您的应用程序没有编辑角色的文档类型也是如此。正如文档所说,对于锁定的文档。
    • 这在某些情况下仍然很有趣。就我而言,我想知道我什么时候在版本浏览器中,因为每个文档都可以使用 >1GB 的 RAM,所以版本浏览器会炸毁 RAM。因此,我只想加载并显示我的文档的更轻松的预览。然而考虑 isInViewingMode 实际上是有道理的。因为我的轻量级预览也与只读或锁定文档相关。所以基本上缺乏信息可能会让我的努力在更多情况下有用。
    • 所以实际上我做了一些实验,在这些情况下 isInViewingMode 仍然是错误的:没有写入权限的文件、锁定的文件、您的应用程序仅作为查看器的文件类型。而我发现的唯一情况确实是在版本浏览器中。因此,尽管文档不清楚,但它看起来是确定您在版本浏览器中的好方法。
    【解决方案2】:

    截至2018-07-04

    - (void)windowWillEnterVersionBrowser:(NSNotification *)notification NS_AVAILABLE_MAC(10_7);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 2011-11-30
      • 2017-01-01
      • 2018-06-21
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2012-06-07
      相关资源
      最近更新 更多