我需要为所有运行的应用程序添加自定义元素到上下文菜单.它有可能吗?类似于:我选择文本并在上下文菜单中我不仅有应用程序项目,而且我的应用程序的其他项目和这些项目必须连接到我的应用程序.它必须适用于所有应用程序.
是否有任何方法可以阻止NSTokenField在按ENTER键时选择所有内容,或者当使用TAB键向第一个响应者发送时?
我正试图在按钮上显示鼠标按下弹出菜单.鼠标按下时按钮应显示为按下,无论选择了任何菜单项,鼠标按下都会"按下".类似于Expose/Space Preference面板"+"按钮,用于添加应用程序.
到目前为止我尝试了3种方法:
单击按钮时发送操作.但是这里弹出菜单出现在鼠标上而不是鼠标按下
子类NSButton并覆盖mouseDown:.鼠标按下时出现弹出菜单,我可以选择任何菜单项.但是当弹出菜单消失时,按钮出现了按下状态.因此,我需要再次单击以"取消"按钮,然后才能再次执行相同的操作.
NSEvent addLocalMonitorForEventsMatchingMask.类似的行为2.
有什么建议吗?我猜方法2或3是正确的方法,只需要在鼠标上"按下"按钮.
你能解释一下我是AppKit线程安全吗?我在哪里可以阅读它?(除了线程编程指南,因为此文档创建了更多问题而不是答案).例如,我可以在分离的线程中验证NSToolbar的voidVisibleItems吗?或者我可以在第二个线程中增加NSProgressIndicator的值吗?
好吧,我得到了这个:http://d.pr/i/jItM
我显然想要将文本向下移动并远离左边缘.我有NSTextField的子类,我绘制了背景,但我无法找到它.
很抱歉发布了这些类型的问题,我看了很多,但找不到答案.
我是一个Python小组,只是对Unix的松散掌握.
我特别需要在Python2.5中开发.我还需要访问AppKit.我通过通用安装程序和我需要的库安装了Python2.5 .当时,默认的OS安装2.7能够导入AppKit.同时,Python2.5不能.我发现这个教程用于替换Python的本机安装,并认为如果我按照它来执行,但是为了切换2.5安装2.5,一切都会膨胀.
在学习完本教程后,我的原生Python确实是2.5.但是,仍然无法导入AppKit,它继续安装在以前用于本机Python的地方(即"没有名为AppKit的模块").
which python返回/usr/bin/python/System/Library/Frameworks/Python.framework带有符号链接/Library/Frameworks/Python.framework.二进制同样联系在一起; usr/bin/python(和pythonw,python-config,pydoc)都是符号链接的/usr/local/bin./usr/bin,/usr/local/bin
因为我从未使用过easy_install,也不知道如何处理它.我完全清楚我已经把事情搞得一团糟.任何人都可以告诉我我需要做些什么才能恢复原状?
更新: 根据以下评论,我确实最终重新安装了Mountain Lion.不可能不那么无痛; 我确实正确安装了AppKit,并且一旦重新安装本机Python,我就能立即工作.
可可中基于单元格的视图和基于视图的表格视图之间的主要区别是什么?
我的理解是基于单元格的表视图基本上用于显示字符串,而基于视图的表用于自定义单元格。用户事件(例如拖动行,选择等)可以在基于视图的视图中进行处理。
基于单元格的表视图使用objectValueForTableColumn:方法,而基于视图的表使用viewForTableColumn:方法。
我的理解正确吗?或者这些表视图之间是否还有其他设计问题。何时基于单元格以及何时基于视图。
提前致谢
如何检查在 OSX 应用程序运行时是否启用了沙箱?
我需要它来对我的库进行一些断言测试,这些测试可以在不同的环境中运行。
我已经在Ray Wenderlich的教程之后在我的Cocoa应用程序上实现了一个集合视图(非常有用,考虑到这个领域中有多少错误和破坏了Apple的API).
在本教程中,使用以下代码将集合视图的画布涂成黑色(所有代码都在视图控制器类的viewDidLoad()方法中):
collectionView.layer?.backgroundColor = NSColor.black.cgColor
Run Code Online (Sandbox Code Playgroud)
然而,当您使用 - 例如 - 魔术鼠标/滚轮来超过("橡皮筋")滚动时"窥视"的区域仍然是白色且非常分散注意力:
我试图让整个内容区域变黑.在我的故事板,我同时设置的背景颜色NSScrollView和NSClipView包含集合视图为黑色,但它不会改变外观.还尝试了程序化的替代方案:为scrollview设置插座并调用:
self.scrollview.backgroundColor = NSColor.black
self.scrollview.contentView.backgroundColor = NSColor.black
Run Code Online (Sandbox Code Playgroud)
......没有效果.
另外,我尝试过:
collectionView.superview?.layer?.backgroundColor = NSColor.black.cgColor
Run Code Online (Sandbox Code Playgroud)
......但这也不起作用.
也不是:
self.view.layer?.backgroundColor = NSColor.black.cgColor
Run Code Online (Sandbox Code Playgroud)
要么:
self.view.window?.backgroundColor = NSColor.black
Run Code Online (Sandbox Code Playgroud)
更新:
我已将滚动视图的背景颜色设置为红色,并设置drawsBackground为true(以IB和编程方式).对于文档NSScrollView的backgroundColor属性说:
此颜色用于绘制内容视图中文档视图未覆盖的区域.
我在运行时验证了文档视图确实是我的集合视图:
if scrollview.documentView is NSCollectionView {
print("Document is collection")
}
Run Code Online (Sandbox Code Playgroud)
但是,不显示红色,文档(集合视图)之外的区域保持白色.
更新2:我解雇了View Hierarchy Debugger,似乎drawsBackground运行时的值为false(我true在代码和故事板中都设置了它)!:
(虽然背景颜色本身似乎有所反映)
这样编译:
import AppKit
class CustomView: NSView, CALayerDelegate {
func layoutSublayers(of layer: CALayer) {}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
import AppKit
import SwiftUI
class CustomView: NSView, CALayerDelegate {
func layoutSublayers(of layer: CALayer) {}
}
Run Code Online (Sandbox Code Playgroud)
这是一个错误:
... error: redundant conformance of 'CustomView' to protocol 'CALayerDelegate'
class CustomView: NSView, CALayerDelegate {}
^
... note: 'CustomView' inherits conformance to protocol 'CALayerDelegate' from superclass here
class CustomView: NSView, CALayerDelegate {}
^
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
如果删除CALayerDelegate一致性,则不会调用委托方法。
appkit ×10
cocoa ×7
macos ×6
calayer ×1
entitlements ×1
nsevent ×1
nstableview ×1
nsview ×1
objective-c ×1
python ×1
python-2.5 ×1
swiftui ×1