Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac OSX、NPAPI中的Cocoa事件模型、NSView和进程外插件_Cocoa_Macos_Plugins_Model_Npapi - Fatal编程技术网

Mac OSX、NPAPI中的Cocoa事件模型、NSView和进程外插件

Mac OSX、NPAPI中的Cocoa事件模型、NSView和进程外插件,cocoa,macos,plugins,model,npapi,Cocoa,Macos,Plugins,Model,Npapi,目前chrome有进程外插件。Firefox4将使用相同的型号 这意味着插件过程现在与浏览器过程分离。 插件进程可能根本没有窗口 我的插件基于NSView 在cocoa事件模型之前,当我可以在浏览器进程中访问NSWindow时,我所要做的就是将我的视图添加为窗口中contentView的子视图 [[the_window contentView] addSubview:my_view] 我不需要自己处理事件。它自己起作用了 但现在,我将npcoacoaevents转换为事件处理代码中的NSEv

目前chrome有进程外插件。Firefox4将使用相同的型号

这意味着插件过程现在与浏览器过程分离。 插件进程可能根本没有窗口

我的插件基于
NSView

在cocoa事件模型之前,当我可以在浏览器进程中访问
NSWindow
时,我所要做的就是将我的视图添加为窗口中contentView的子视图

[[the_window contentView] addSubview:my_view] 
我不需要自己处理事件。它自己起作用了

但现在,我将
npcoacoaevents
转换为事件处理代码中的
NSEvents

我必须自己换吗

还有一些
n事件的实例
,我无法生成它们,例如,滚轮鼠标事件

我该怎么办

我走错路了吗

请开导我

我必须自己换吗

如果您计划使用将NSEvents转发到现有NSView的方法,则是;无法访问原始N事件。它们不存在于插件过程中

另一种选择是不再尝试使用本机控件,而是自己进行绘图和事件处理。这是大多数NPAPI插件的工作方式

第三种可能是为插件内容打开一个单独的窗口,并将视图放在该窗口中。NPAPI在技术上不支持这一点,它也不完美,但这可能是一种短期的方法,可以让你的插件在探索长期选项的同时工作

我走错路了吗


是的,您之前所做的是一个不受支持的黑客,而不是NPAPI的用途。将视图添加到浏览器窗口时,浏览器的视图层次结构中的某些内容是实现细节,随时可能发生更改。

一个选项是使用框架创建插件,因为它已经有很多用于协商事件和绘图模型的抽象以及事件抽象。起床和出发很简单。

谢谢你的回答。这是一个很好的建议。