问题标签 [nsview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9105 浏览

objective-c - 在 mac 包中嵌入字体

我有一个正在编写的程序。我想使用一种花哨的字体。我可以将我的字体嵌入到我的包中并从那里使用它。

我的代码...

0 投票
4 回答
2596 浏览

objective-c - 打印一个 NSDocument

我正在尝试打印文档。该文档是一个 NSImageRep 数组,或者是一个 NSPDFImageRep,它有多个页面。我无法弄清楚如何使用 NSPrintOperation 类来打印它。

NSPrintOperation 似乎需要一个 NSView 来打印。我是否需要手动将每个图像添加到视图中的计算位置,然后让它进行分页?这似乎不符合 Cocoa 的精神......我是否缺少一些技术?

0 投票
1 回答
651 浏览

cocoa - NSView 中的 NSTableView 和 NSSearchField,它是 NSMenuItem 的出口,不起作用

我有一个NSView,它被设置为一个的view:出口NSMenuItem。该视图包含一个NSTableView(在一个内部NSScrollView)和一个NSSearchFieldNSMenu当用户单击特定的 时显示NSStatusItem。当我从 Xcode 启动应用程序(构建和运行)时,控件表现良好,但每当我从 Finder 启动它时(就像用户那样),它们不起作用并且没有任何焦点。我的应用程序是一个LSUIElement. 谁能帮我吗?谢谢。

0 投票
2 回答
4893 浏览

objective-c - 自定义 NSView 的子视图正在调整自身大小以适应其父视图

我有一个包含子视图的自定义 NSView——为了解决这个问题,顶层视图只是充当容器并自动调整大小以适应窗口。它的子视图从窗口边缘绘制一个 10 像素插入的矩形,底部除外,它应该被窗口剪裁,直到它被调整大小以显示整个矩形。但是,它并没有按照我的意图运行,而是在其父视图的高度小于它的高度时缩小矩形的高度。我如何避免这种情况并让它保持在适当的高度,而不是在超级视图较小时被剪裁?

父视图的实现代码为:

子视图只是:

0 投票
0 回答
583 浏览

cocoa - NSTextView 的 adjustScroll 方法

我试图在我的 Cocoa 文本编辑器中实现打字机滚动,保持插入点在其滚动视图中垂直居中。

为此,我进行了子类化NSClipView以提供一种scrollToPointWithoutConstraint方法,该方法无需调用即可将文档滚动到指定点constrainScrollPoint。这是必要的,因为对于短文档,插入点不能居中,除非我们滚动超出文档的边界。

到目前为止,这似乎相当简单,并且可以满足我的要求。当我尝试使用滚动条滚动时,问题就出现了。如果我滚动到文档的末尾,这样滚动视图的一部分包含文档边界之外的区域,尝试向上滚动一个小增量会导致滚动视图跳转,立即夹紧到文档的实际边界。

我收集到我可能需要子类NSTextView化并覆盖该adjustScroll方法;这是我的实际问题开始的地方。proposedVisibleRect传递给的已经adjustScroll调整了其尺寸,以便它们位于文档的实际范围内。有没有办法可以改变proposedVisibleRectbefore的值adjustScroll?或者,我是否完全错了?在这一点上,任何建议将不胜感激。

0 投票
9 回答
17733 浏览

objective-c - NSCollectionView 中的选择突出显示

我有NSCollectionView一个次要但关键的例外情况。获取并突出显示集合中的选定项目。

在 Snow Leopard 之前,我已经完成了所有这些工作,但似乎发生了一些变化,我无法完全确定它,所以我NSCollectionView回到了基本测试,并按照 Apple 的文档在此处创建 NSCollectionView:

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CollectionViews/Introduction/Introduction.html

按照快速入门指南,集合视图可以正常工作。但是,本指南不讨论除"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected".

以此为例,我进入下一步,NSCollectionView使用控制器键将 Array Controller 绑定到selectionIndexes,认为这将绑定我在NSCollectionView和 数组控制器之间所做的任何选择,从而触发 KVO 通知。我还将NSCollectionViewIB 设置为可选。

似乎没有选择委托,NSCollectionView并且与大多数 Cocoa UI 视图不同,似乎没有默认选择的突出显示。

所以我的问题真的归结为一个相关的问题,但是两个不同的问题。

  1. 如何捕获对项目的选择?
  2. 如何显示项目的亮点?

NSCollectionView的编程指南似乎少之又少,大多数通过 Google 进行的搜索似乎都提取了 Snow Leopard 之前的实现,或者在单独的 XIB 文件中使用视图。

对于后者(视图的单独 XIB 文件),我不明白为什么这应该是先决条件,否则我会怀疑 Apple 不会将视图包含在与集合视图项相同的包中。

我知道这将是一个“只见树木不见森林”的问题——所以我已经准备好迎接“doh!”。片刻。

像往常一样,非常感谢任何和所有帮助。

更新 1

好的,所以我想找到选定的项目,但还没有想出突出显示。对于对确定所选项目感兴趣的人(假设您遵循 Apple 指南):

在控制器(在我的测试用例 App Delegate 中)中,我添加了以下内容:

在 awakeFromNib

新方法

不要忘记为非 GC 解除分配

仍在寻找高光分辨率...

更新 2

接受了 Macatomy 的建议,但仍有问题。发布相关的类方法,看看我哪里出错了。

我的视图.h

我的视图.m

我的CollectionViewItem.h

"MyCollectionViewItem.m*

0 投票
1 回答
470 浏览

cocoa - 如何模仿Automator的工作流视图?

我开始开发我的第一个成熟的 Cocoa 应用程序,其中包含一个我希望其行为(和外观)类似于 Automator 的AMWorkflowView.

我想实现的基本功能:

  • 子视图的定位
  • 以展开/折叠状态显示子视图
  • 多项选择
  • 拖放

为了习惯 Cocoa,我从一个自定义开始,NSView它主要用作自定义子视图的容器,并处理它们的定位和多选。子视图也是 的子类NSView,它们本身包含可变数量的视图,如按钮、标签和弹出菜单,因此可以有不同的高度。这工作得很好,但在继续之前,我想确保根据 MVC 模式让所有东西都整齐有序。

我怀疑 Cocoa 中已经有一个类可以促进视图容器的实现,比如可能NSCollectionView. 不过,似乎没有(简单的)方法可以在 中显示不同大小的视图NSCollectionView。我应该继续实现我的自定义NSView(可能使用NSArrayController选择和排序支持),还是有更好的方法?

任何帮助深表感谢

0 投票
1 回答
595 浏览

cocoa - 在 NSView 中重置图像

我认为这是一个非常简单的问题,但我是编程新手,所以我可能会以错误的方式处理它。

我对 Objective-C 编写终端应用程序有基本的了解,并且正在自学如何使用 Cocoa GUI。

我了解如何使用一个简单的按钮IBOutlet并将IBAction其连接到一种将随机数重复发送到文本字段的方法。

我了解如何添加NSView文件,将其连接到界面构建器中的自定义视图,并在应用程序启动时通过视图中的随机点绘制路径。

(我一直将此代码放在- (void)drawRect:(NSRect)dirtyRect创建文件时声明的方法中)。

我似乎无法弄清楚如何将按钮连接到将“刷新”视图的操作 - 在这种情况下,用另一组与路径连接的随机点重新填充它。查看文档,我想我应该以某种方式使用

但到目前为止我所尝试的一切都没有奏效。请告诉我,我在这里缺少什么?

0 投票
3 回答
1288 浏览

objective-c - 在自定义视图上显示 NSString

我有一个具有NSTextField,NSButtonNSView. 当我在 中输入NSTextfield内容并按下按钮时,我希望将文本绘制在NSView. 到目前为止,除了视图之外,我的所有东西都已连接并正常工作。

如何连接文本和视图,以便每次按下按钮时,都会将文本绘制到视图中?

0 投票
1 回答
533 浏览

cocoa - Cocoa UI 元素未更新

我有一些 Cocoa UI 元素,其出口连接到在 NSView 对象中实例化的对象,而该对象又由 NSViewController 放在那里。这些元素,一个明确的进度条和一个文本标签,没有更新:进度条是死的和空的,尽管它的值不断变化,文本标签不会通过 [textLabel setHidden:NO] 取消隐藏,文本标签不会改变它的字符串。

我知道的:

  • 绑定值和在代码中设置它们之间没有区别。两种方式都没有改变。
  • 我检查了插座连接。他们都在那里。
  • 我试过 [X displayIfNeeded],其中 X 是 UI 对象本身、包含 NSView 和主窗口。没有不同。
  • [progressBar setUsesThreadedAnimation:YES] 没有区别。有趣的是,如果我在程序中查看progressBar,_threadedAnimation 仍然是NO。
  • 拥有所有这些出口并执行导入操作的对象位于 NSViewController 对象拥有的 NSOperationQueue 中。

谢谢!

编辑:按照建议,我调用了 [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithInt:myObject] waitUntilDone:NO]。(我也试过 waitUntilDone:YES。)它仍然没有更新。调试器清楚地显示 updateProgress: 发生在主线程中,所以我不知道缺少什么。