Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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/8/vim/5.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
Objective c 如何创建一个类似iTunes迷你播放器的NSWindow(始终位于顶部,但没有焦点!)_Objective C_Cocoa_Nswindow - Fatal编程技术网

Objective c 如何创建一个类似iTunes迷你播放器的NSWindow(始终位于顶部,但没有焦点!)

Objective c 如何创建一个类似iTunes迷你播放器的NSWindow(始终位于顶部,但没有焦点!),objective-c,cocoa,nswindow,Objective C,Cocoa,Nswindow,我有一个无边界窗口,其中有一个webview,它始终位于顶部。 我想创建一个NSWindow,它是: 永远在最上面 不会从当前前台应用程序获取焦点 是否启用用户-鼠标交互(不强制用户将焦点切换到它-也称为“单击它两次”) 我遇到的问题是,要与窗口交互(例如,查看悬停效果,或单击webview中的链接),用户必须单击窗口(使其具有焦点),然后才会显示悬停效果 我如何制作一个像iTunes mini player这样的窗口,它不需要当前应用程序的焦点,但也可以与鼠标交互?(见下面的屏幕截图) 谢谢

我有一个无边界窗口,其中有一个webview,它始终位于顶部。 我想创建一个NSWindow,它是:

  • 永远在最上面
  • 不会从当前前台应用程序获取焦点
  • 是否启用用户-鼠标交互(不强制用户将焦点切换到它-也称为“单击它两次”)
  • 我遇到的问题是,要与窗口交互(例如,查看悬停效果,或单击webview中的链接),用户必须单击窗口(使其具有焦点),然后才会显示悬停效果

    我如何制作一个像iTunes mini player这样的窗口,它不需要当前应用程序的焦点,但也可以与鼠标交互?(见下面的屏幕截图)

    谢谢


    要接收
    鼠标输入:
    鼠标移动:
    鼠标退出:
    事件,即使应用程序未处于活动状态,也必须在窗口中的某些视图中添加跟踪区域,并相应地设置跟踪区域的属性

    看一看


    您可能需要添加一个带有选项的跟踪区域,这些选项包括
    nstrackingActivatealways
    NSTrackingMouseEnteredAndExited
    mouseEntered:
    mouseExited:
    事件,即使您的应用程序未处于活动状态,您必须将跟踪区域添加到窗口中的某个视图中,并相应地设置跟踪区域的属性

    看一看


    您可能需要添加一个跟踪区域,其中包含选项
    NSTrackingActiveAlways
    nstrackingamouseenteredandexited

    似乎-(BOOL)acceptsFirstMouse:(NSEvent*)事件完成了我想要的一半,另一半在窗口不活动时也接受“鼠标移动事件”。(因为我想有一个悬停效果,就像迷你播放器一样)看起来-(BOOL)接受firstmouse:(NSEvent*)这个事件做了我想要的一半,另一半在窗口不活动时也接受“鼠标移动事件”。(因为我想有一个悬停效果,就像迷你播放器一样)我这样做了,但后来我尝试将事件传递到webview,但没有成功-所以它没有显示悬停效果(由鼠标移动事件引起),那么你的问题在于如何传递事件。为什么不以本机方式处理事件,并在web内容的javascript中有一个回调来显示/隐藏控件呢?如果网页处于焦点位置,它就可以正常工作。使用css:悬停按钮显示和取消显示,如我所愿。但是当webview没有焦点时,即使安装了NSTrackingArea,它也不会接收鼠标事件。现在的目标是-我要我通过跟踪区域将事件捕获传递给webview。你不能,webview就是不能这样工作。解决方案是在web内容中安装一些javascript以显示悬停效果,并从应用程序调用。如果有时间的话,我稍后会制作一个示例应用;)正如我之前解释的那样。无论您编写什么java脚本,它都不会接收任何鼠标悬停事件,除非NSWindow处于活动状态!正如这个问题的标题明确指出的那样,NSWindow必须位于顶部,但不能有焦点(如iTunes miniplayer)。因此,请不要费心编写任何javascript:)我这样做了,但后来我尝试将事件传递到webview,但没有成功-因此它没有显示悬停效果(由鼠标移动事件引起),那么您的问题在于如何传递事件。为什么不以本机方式处理事件,并在web内容的javascript中有一个回调来显示/隐藏控件呢?如果网页处于焦点位置,它就可以正常工作。使用css:悬停按钮显示和取消显示,如我所愿。但是当webview没有焦点时,即使安装了NSTrackingArea,它也不会接收鼠标事件。现在的目标是-我要我通过跟踪区域将事件捕获传递给webview。你不能,webview就是不能这样工作。解决方案是在web内容中安装一些javascript以显示悬停效果,并从应用程序调用。如果有时间的话,我稍后会制作一个示例应用;)正如我之前解释的那样。无论您编写什么java脚本,它都不会接收任何鼠标悬停事件,除非NSWindow处于活动状态!正如这个问题的标题明确指出的那样,NSWindow必须位于顶部,但不能有焦点(如iTunes miniplayer)。因此,请不要费心编写任何javascript:)