【发布时间】:2010-03-22 21:49:18
【问题描述】:
我正在尝试使用 IKImageView 的选择和复制功能。如果您只想拥有一个带有图像的应用程序,选择一个部分并将其复制到剪贴板,这很容易。您将复制菜单选择设置为第一响应者的 copy:(id) 方法,然后神奇地一切正常。
但是,如果您想要一些更复杂的东西,比如您想将复制作为其他操作的一部分,我似乎找不到执行此操作的方法。
IKImageView 似乎没有复制方法,它似乎没有甚至可以告诉您所选矩形的方法!
我已经阅读了 Hillegass 的书,所以我了解剪贴板的工作原理,而不是如何将图像的一部分移出视图...
现在,我开始认为我将项目基于 IKImageView 时犯了一个错误,但这是 Preview 的构建基础(或者我已经阅读过),所以我认为它必须是稳定的......无论如何,现在已经太晚了,我太深了,无法重新开始......
那么,除了不使用 IKImageView 之外,关于如何手动将选择区域复制到剪贴板的任何建议?
EDIT 实际上,我找到了 copy(id) 方法,但是当我调用它时,我得到了
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 16 bits/pixel; 1-component color space; kCGImageAlphaPremultipliedLast; 2624 bytes/row.
当我通过第一响应者进行正常复制时显然不会发生这种情况......我理解错误消息,但我不确定它从哪里获取这些参数......
有什么方法可以追踪到这并看看这是怎么发生的?由于显而易见的原因,以及我在 Mozilla 中执行此操作的事实,调试器无济于事,因此无论如何调试器都不是一个选项...
EDIT 2 我发现我发现的 copy:(id) 方法可能是复制 VIEW 而不是将图像的一部分复制到剪贴板,这正是我所需要的。
我认为它是剪贴板副本的原因是,在另一个项目中,我直接从编辑菜单从 IKImageView 复制到剪贴板,它只是将副本:(id)发送到 firstResponder,但我'实际上并不确定第一响应者如何处理它......
EDIT 3 CGBitmapContextCreate 错误似乎来自[imageView image],奇怪的是,IS 是一个记录方法。
这可能是因为我使用 setImage:(id) 方法将图像放入其中,并将其传递给 NSImage*... 是否有其他更聪明的方法可以将 NSImage 放入 IKImageView ?
【问题讨论】:
-
您绝对可以在Mozilla/Firefox等外部应用程序中调试插件。只需在您的 Xcode 项目中创建一个自定义可执行文件并将其指向您要在其中进行调试的应用程序。我已经使用 Safari、Dreamweaver、Adobe GoLive 等成功地完成了这项工作。
-
“我突然想到我发现的
copy:(id)方法可能是复制 VIEW 而不是将一大块图像复制到剪贴板……” 不,您正在考虑copy(注意没有参数),它返回对象的副本并且不适用于视图。copy:(一个参数)`是一个动作,它告诉接收器(视图)将其选择复制到剪贴板。
标签: objective-c cocoa imagekit ikimageview