小编Mar*_*ark的帖子

以编程方式将“打开最近”菜单添加到上下文弹出菜单

我有一个带有菜单栏图标和状态菜单的非文档 Cocoa 应用程序。我在 Interface Builder 的状态菜单中添加了一个“打开最近的”菜单。填充菜单工作得很好:

[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:
            [NSURL fileURLWithPath:filename]]
Run Code Online (Sandbox Code Playgroud)

现在我还想在上下文弹出菜单中添加第二个“打开最近”菜单。我将如何以编程方式创建菜单,以便像状态菜单中的版本一样自动填充条目?

我尝试在状态菜单中创建一个副本,但它没有被填充。我假设 NSDocumentController 不知道菜单(坦率地说,我不知道它是如何知道状态菜单中的)。

cocoa contextmenu menubar

5
推荐指数
1
解决办法
1394
查看次数

如何在调整父NSView的同时将CALayer保持在相同位置?

想象一下CALayer在其父图层的左下角绘制的一个小红框(实例)(它是图层托管的根层NSView).

当父视图的框架发生变化时,红色框应保持在屏幕上的相同位置.我这样做是通过调整它相对于父视图左下角的位置来实现的.

问题是在某些情况下会出现闪烁,我可以看到红框图层在扩展框架的左下角被绘制,然后显示在正确的位置.

我认为将框架和位置变换包装CATransaction在一起会使两个变化在一起,但这并不总是有效(文档说通过使用事务动画将同时开始,但似乎仍然存在竞争条件有时).

如何NSView在保持子图层处于感知位置的同时调整父级的框架?

示例和代码:

NSView和框图层

我自己的想法:

  1. 隐藏红色框图层,更新位置,再次显示

  2. 使用约束将其绑定到右角.问题是这个偏移也可能会改变,我将不得不更新可能导致同样闪烁问题的约束.

core-animation calayer nsview catransaction

5
推荐指数
1
解决办法
856
查看次数

根据下一行是否为组行绘制自定义NSTableRowView

我有一个自定义NSTableRowView实现来显示我的数据单元格.该表还包含使用简单的组行NSTextField.

在我的自定义行视图中,我需要稍微更改底部分隔符的绘图,具体取决于下面的下一行是数据单元格(即我的自定义行)还是组标题.

在组头的情况下,我不必绘制分隔符,否则我最终会得到一个2px分隔符,如屏幕截图所示.

有没有办法从下一个(或上一个)NSTableRowView实例获取引用[NSTableRowView drawBackgroundInRect:...]

分离器

cocoa nstableview

5
推荐指数
1
解决办法
3589
查看次数

截断多行NSTextField的最后一行

我正在尝试创建一个类似于Finder文件标签的文本字段.我希望最后(第二)行在中间被截断.

我从一个多线开始NSTextField.

但是,[self.cell setLineBreakMode:NSLineBreakByTruncatingMiddle];在文本字段中调用结果只显示一条截断的行(不再有换行符).

这是Finder中的样子:

Finder的例子

cocoa nstextfield nstextfieldcell

5
推荐指数
1
解决办法
4280
查看次数

NSTextField:当用户单击文本字段之外时结束编辑

我有一个NSTextField根据用户操作设置为可编辑的。我想在用户单击窗口内文本字段之外的任何位置时结束编辑。

看起来很简单,但我无法让它发挥作用。我实现了controlTextDidEndEditingtextDidEndEditing,但没有运气,特别是当我单击不接受第一响应者状态的用户界面元素时。

cocoa objective-c nstextfield

5
推荐指数
1
解决办法
2648
查看次数

应用程序沙箱:重命名文件不起作用

我有一个基本的Cocoa应用程序,可以让用户管理文件列表。通过拖放添加文件,并且在应用程序重新启动期间,我将访问权限保留在安全的书签中。

到目前为止,一切都很好。允许该应用读取和写入用户的文件,但是重命名失败并出现权限错误,声称不允许我的应用访问父文件夹。

码:

[[NSFileManager defaultManager] moveItemAtPath:currentPath 
                                        toPath:newPath error:&error]
Run Code Online (Sandbox Code Playgroud)

错误:

Error Domain=NSCocoaErrorDomain Code=513 "“Some image.jpg” couldn’t 
be moved because you don’t have permission to access “some folder”
Run Code Online (Sandbox Code Playgroud)

我发誓这只在昨天才起作用,但没有任何变化。我假设如果用户允许通过“打开”对话框访问文件或拖放文件,则应允许沙盒应用程序重命名文件。

cocoa mac-app-store appstore-sandbox

5
推荐指数
1
解决办法
2029
查看次数

仅为特定子视图控制器设置UINavigationBar的tintColor

我有一个基本的主 - 细节应用程序.根据在主列表中选择的项目,我只想tintColor在详细信息视图中设置导航栏.

我设置了这样的色调颜色:self.navigationController.navigationBar.tintColor = detailTintColor;viewWillAppear:细节控制器中.

但是,这也会将主控制器导航栏的颜色更改为黄色(应保持红色),这在过渡动画期间可见为闪烁.我假设因为只有一个导航栏实例.

这里有一个截图来说明问题:

  • "i"图标位于主视图控制器的导航栏中,应为红色,而不是黄色

在此输入图像描述

uinavigationbar uinavigationcontroller tintcolor ios

5
推荐指数
1
解决办法
4245
查看次数

如何使用Xcode等蓝色色调绘制分段控件?

我正在尝试重新创建Xcode中使用的分段控件,其中图像是用蓝色色调绘制的.

例如在Interface Builder中:

Interface Builder示例

到目前为止,我有一个自定义NSSegmentedCell覆盖- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView,但我坚持如何绘制带有灰色色调的段图像(1)和(2)如果选择了蓝色色调.

此外,它看起来像是用边框或渐变效果绘制的.当我自己绘制段图像时,它只是黑色(因为我使用模板图像).

如何从上方重新创建片段?

xcode cocoa nssegmentedcontrol

5
推荐指数
1
解决办法
1587
查看次数

UIDocument在revertToContentsOfURL:completionHandler:上崩溃,并带有“试图还原尚未打开的文档”

我的iOS应用在生产时崩溃UIDocument.revert(toContentsOf url: URL, completionHandler: ((Bool) -> Void)? = nil)。从错误消息看,好像该文档应该被还原到其自身。例如:

**** Terminating app due to uncaught exception 
     'NSInternalInconsistencyException', 

  reason: 'attempt to revert document at URL (        
    file:///private/var/mobile/Library/Mobile%20Documents/
            iCloud~com~myapp/Documents/sampledocument.test)
    to URL (
    file:///private/var/mobile/Library/Mobile%20Documents/
            iCloud~com~myapp/Documents/sampledocument.test) 
  that is not yet open'
Run Code Online (Sandbox Code Playgroud)

我没有任何特定的代码来还原文档版本,而且我自己也无法重现此版本,但是它对许多用户来说都是这样。

UIDocument会尝试还原其内容,为什么会尝试将同一文件还原为其自身?

这可能是关闭文档但由于某种原因试图放弃更改的竞争条件吗?

ios uidocument

5
推荐指数
0
解决办法
115
查看次数

CSS:多列多页布局就像一本打开的书

是否可以使用 HTML 和 CSS 创建一个两列的多页布局,如本模型所示,其中内容自动从 1 流出?2 ? 3 ? 4 ? ……?

书籍布局

我正在构建一个电子书阅读器/编写器。本质上,布局类似于 Word 或 Pages 等桌面文字处理应用程序的布局:

  • 两页彼此相邻填满屏幕(如果您打开一本书,则为“左”和“右”页)
  • 下面接下来的两页,垂直滚动等(想象在书中翻页)
  • 文本自动从一页流向下一页 1 ? 2 ? 3 ? 4 ? ...

我试验了 CSS 多列布局模块¹。获得两列是直接的,但我无法弄清楚如何在视口高度“分解”为多个“两列”布局,每组“左右”页面一个。

澄清:

内容基本上是一大块<div contenteditable="true">。它的内容需要自动跨页面流动。

<div id="bookeditor" contenteditable="true">
    Book contents go here...
    Wrap from page to page, from row to row...
</div>
Run Code Online (Sandbox Code Playgroud)

1:https : //developer.mozilla.org/en-US/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts

html css css-multicolumn-layout

5
推荐指数
1
解决办法
678
查看次数