问题标签 [appkit]
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.
cocoa - 验证对 NSCollectionView 的拖动不会在视觉上反映出来
我有一个 NSCollectionView,我想接受从我的应用程序的其他地方拖动的项目。
我在 collectionview 的委托中实现collectionView:validateDrop:proposedIndex:dropOperation:
并collectionView:acceptDrop:index:dropOperation:
注册适当的拖动类型。当我拖动适当的类型时,这两种方法都可以正常调用,但是我没有在 collectionview 上得到一个蓝色的焦点环,表示有效的拖动。
已经尝试过集合视图及其包含焦点环的默认和外部设置的滚动视图。两者都只是标准的非派生 Cocoa 类。想知道是否还有什么我应该尝试的。当然没有必要为此子类化 NSCollectionView 吗?
谢谢克里斯
_
macos - 跨运行存储 NSCombobox 历史记录
我正在编写一个小的 Mac OS 实用程序,它有一个用于 URL 的 NSComboBox。
我希望历史保持不变,但我不确定在哪里/何时/如何保存数据。
如果这是一个 iPhone 应用程序,我会在应用程序被告知它将退出时保留 URL 数组,但我不确定这是 Mac OS 上的最佳方式。
当应用程序退出时,我是否应该做同样的事情并将数组编码到文件中?或者我应该使用 CFPreferences 吗?或者是其他东西 ?
cocoa - NSScrollView(或 NSClipview)对焦环?
我在 NSScrollView 中有一个自定义 NSView。我正在尝试在 NSScrollView(或者 NSClipView)周围绘制一个焦点环,以便当我的自定义视图接收到拖放悬停时,滚动视图似乎获得焦点。我到底该怎么做?我不想继承 NSScrollView ... 是吗?
cocoa - 如何在 NSWindow 关闭时收到通知
我怎样才能注意到 NSWindow 应该或将要关闭?我想要类似windowWillClose 的东西。不幸的是,NSWindowController 没有 UIViewController 那样方便的方法,例如。那么这样做的最佳做法是什么?
谢谢
-f
objective-c - NSTextView 在图层上不显示红色拼写错误下划线
当 an是 layer-backed ( )NSTextView
的子视图时,它不会为拼写错误的单词呈现波浪状的红色下划线。重现这一点只需创建一个空的 Cocoa 项目,打开 nib,拖入窗口,然后切换窗口的内容视图以显示图层。繁荣 - 不再有红色下划线。NSView
-wantsLayer == YES
NSTextView
我进行了一些搜索,这似乎是一种已知情况,并且自 10.5 以来一直如此。但是,我找不到的是一种解决方法。NSTextView
当处于图层支持的视图中时,是否没有办法让下划线呈现?
我可以想象覆盖NSTextView
'sdrawRect:
并使用布局管理器找到具有指示拼写错误的适当临时属性集的适当矩形,然后自己绘制红色曲线,但这当然是一个彻底的黑客。我也可以想象 Apple 在 10.7(也许)中修复了这个问题,突然我的应用程序会有双下划线或其他东西。
[更新] 我的解决方法
我目前的解决方法是受到 nptacek 提到的拼写检查委托方法的启发,这促使我深入挖掘了一条我以前没有注意到的路径,所以我将接受这个答案,但发布我为后代和/或进一步所做的事情讨论。
我正在运行 10.6.5。我有一个 NSTextView 的子类,它是 NSClipView 的自定义子类的文档视图,它又是我的窗口的 contentView 的子视图,它打开了图层。在玩这个的过程中,我最终将所有自定义项都注释掉了,但拼写检查仍然无法正常工作。
我隔离了我认为是两个不同的问题:
#1是 NSTextView,当托管在图层支持的视图中时,甚至不会费心绘制拼写错误的下划线。(我根据谷歌搜索收集到,它可能在 10.5 天内画了下划线,但不是在正确的位置 - 所以苹果可能刚刚完全禁用它们以避免在 10.6 中出现这个问题。我不确定.我如何定位东西等也可能有一些副作用,导致它们根本不会出现在我的案例中。目前未知。)
#2是当 NSTextView 处于这种与图层相关的情况时,它似乎在您键入文本时没有正确地将文本标记为拼写错误 - 即使 -isContinuousSpellCheckingEnabled 设置为 YES 也是如此。我通过实现一些拼写检查委托方法来验证这一点,并观察 NSTextView 发送有关更改的消息,但从未通知将任何文本范围设置为拼写错误 - 即使明显拼写错误的单词会在 TextEdit(和其他文本视图中显示红色下划线)在其他应用程序中)。我还覆盖了 NSTextView 的 -handleTextCheckingResults:forRange:types:options:orthography:wordCount: 以查看它所看到的内容,并且在那里看到了同样的内容。就好像 NSTextView 正在积极地将光标下的单词设置为没有拼写错误,然后当用户键入空格或离开它或其他什么时,它没有 t 重新检查拼写错误。不过,我并不完全确定。
好的,为了解决#1问题,我在我的自定义 NSTextView 子类中覆盖了 -drawRect: ,看起来像这样:
然后我实现了 -drawFakeSpellingUnderlinesInRect: 以使用 layoutManager 来获取包含 NSSpellingStateAttributeName 作为临时属性的文本范围,并呈现一个合理接近标准 OSX 拼写错误点图案的点图案。
所以在这样做之后,我可以看到红色下划线,但它似乎没有在我输入时更新拼写状态。为了解决这个问题,我在我的 NSTextView 子类中实现了以下邪恶的黑客攻击:
它的工作方式与实际的、预期的 OSX 行为不太一样,但它有点接近,现在可以完成工作。希望这对其他人有所帮助,或者更好的是,有人来这里告诉我我遗漏了一些非常简单的东西并解释了如何解决它。:)
cocoa - “colorWithCalibratedRed:green:blue:alpha:”不起作用
我想使用 NSColor 创建颜色,但似乎没有一个静态构造函数对我有用。屏幕截图描述了我遇到的问题。
我在参考:
并导入了框架“AppKit”。我还需要做什么?
objective-c - 自定义窗口标题 + 工具栏(ala. Mac App Store 和 Reeder for Mac)
我试图弄清楚如何创建“新流行”组合窗口标题和工具栏,如 Reeder for Mac 和 Mac App Store (http://www.apple.com/mac/app-store/) 中所示。尝试使用谷歌搜索,但这似乎不是一个非常讨论的话题!
基本上; 它是一个带有自定义视图的无边框窗口吗(在这种情况下,我如何获得工作的交通灯按钮)?或者是否可以使用 Interface Builder?
objective-c - 自定义视图最小尺寸
有没有办法强制自定义视图(NSView)的最小尺寸?我知道窗口一可以设置最小尺寸,但自定义视图没有这样的设置。
是否可以为此目的对 NSView 进行子类化?
我需要这个的原因是因为我有以下结构。现在,如果我使用拆分视图栏并将其一直推到顶部,然后再次将其拉回,表格视图将填充拆分视图的整个上部,隐藏所有其他组件。如果我可以指定上部自定义视图的最小尺寸,我可以防止这种情况发生。
谢谢
objective-c - 如何使具有相同选项的多个菜单保持同步?
显然,我的应用程序在菜单栏中有一个主菜单。其中一个菜单项包含一个子菜单,该子菜单也可以NSPopUpButton
在我的应用程序的其他地方使用。
到目前为止,我只是在代码中复制菜单选项(以编程方式)以制作弹出按钮,但是当我更改选择器的名称或菜单项的标题等时,我不可避免地忘记也进行相同的更改在弹出按钮中。
我想在一个地方定义菜单并在两个地方使用它。这可能吗?
我试过这个:
不幸的是,这会导致运行时错误:
2010-12-19 02:56:11.571 MojiBaker[85384:a0f] *断言失败 -[NSMenuItem setSubmenu:], /SourceCache/AppKit/AppKit-1038.35/Menus.subproj/NSMenuItem.m:695
objective-c - 允许单击并拖动视图以拖动窗口本身?
我正在使用一个纹理窗口,它的顶部有一个标签栏,就在标题栏的下方。
我-setContentBorderThickness:forEdge:
在窗口上使用了使渐变看起来正确,并确保纸张从正确的位置滑出。
然而,什么不起作用,是拖动窗口。如果我单击并拖动实际上是标题栏的区域,它会起作用,但是由于标题栏渐变溢出到(可能/通常为空的)选项卡栏,单击太低真的很容易,当你尝试拖动时感觉真的很沮丧并意识到窗口没有移动。
我注意到NSToolbar
,虽然在标题栏下方占据大致相同的空间量,但当光标在窗口上方时,它允许拖动窗口。如何实现这一点?
谢谢。