问题标签 [nsevent]

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.

0 投票
3 回答
6907 浏览

objective-c - 在 NSView 控制器中获取按键事件

我正在尝试找到一种解决方案,允许我在视图控制器中获取 keydown 事件。我不相信默认情况下视图控制器是响应者链的一部分。

我将不胜感激如何进行此操作的示例。我很难找到我能理解的关于如何将 VC 添加到响应者链并获取事件的文档。

谢谢。

米克

0 投票
1 回答
199 浏览

events - How to make a NSTextField added to a NSView Draggable

Let me elaborate the steps i am doing

  1. Create Mac 10.9 Project
  2. Drag a CustomView (Let's call it myView) to the .xib
  3. Drag a NSButton to the .xib but out side the CustomView
  4. Now programatically (using a other class) i add a NSTextField to the CustomView when the button is clicked by this code

    NSTextField *textField = [[NSTextField alloc] init]; [textField setBezeled:NO]; [textField setEditable:NO]; [textField setSelectable:NO]; [textField setFont:[NSFont fontWithName:@"Arial" size:20]]; [textField setStringValue:@"Hello World!"]; int textWidth = textField.fittingSize.width; int textHeight = textField.fittingSize.height; [textField setFrame:NSMakeRect(0, 0, textWidth, textHeight)]; [myView addSubview:textField];

  5. Now i see that the TestField is added to myView

  6. All i want is the user can drag the textField movable inside myView

i added the following code

But the NSLog is not getting shown

How do i make the NSTextField draggable?

0 投票
1 回答
2120 浏览

cocoa - 如何处理急救人员和 NSPopover

我正在尝试复制 iTunes 中搜索字段的行为,以查找股票代码和名称。具体来说,当您开始在搜索字段中输入时,会出现一个带有过滤项目的弹出框。在大多数情况下,我有这个工作但是我无法复制的是它处理第一响应者的方式 在此处输入图像描述

输入三个字符后,我的弹出框出现了。此时 NSSearchField 将失去第一响应者状态,因此我无法继续输入。我想要的行为是能够在弹出窗口出现后继续输入,如果使用箭头键滚动项目,然后继续输入,您将从搜索字段中的最后一个字符继续。

我尝试的是继承 NSTextView(将其用作 NSSearchField 的自定义字段编辑器)并覆盖

通过简单地返回 NO,我可以在弹出框出现后继续输入,但显然我无法选择弹出框中的任何项目。所以我尝试了以下方法,如果发生向下箭头或 mousedown 事件,则返回 YES。

这适用于 mousedown 事件,但不适用于 keydown 事件,此外,当用户继续键入时,这并不能解决问题。

有什么建议么?

0 投票
1 回答
482 浏览

objective-c - NSView 在超出范围后捕获鼠标移动

我知道标题选得不好,但我不知道如何更好地描述它......

我有一个 NSView 实例,我将其添加到屏幕右侧边缘的窗口中:

当用户到达屏幕边缘时,我想捕捉鼠标。然后我使用此方法将位置发送到自定义委托协议:

我现在想继续捕捉真正的鼠标移动,当用户继续将它拖到右侧时。但是,正如预期的那样,当指针超出视图边界时,NSView 不会接收移动动作。屏幕的边缘。

我想创造一些你可以想象的东西,放在屏幕旁边的假想视图。

是否有可能继续捕获鼠标?然后只有在鼠标一直移动到“想象”视图的左边缘之后才让鼠标移动到视图之外?

0 投票
2 回答
1595 浏览

macos - NSEvent`subtype`相当于CGEvent?

NSEvent有一个获取事件的方法subtype

获取自定义事件信息
——data1
——data2——
子类型

是否可以subtype在不先将其转换为 NSEvent 的情况下从 CGEvent 访问它?

CGEvent文档提到了鼠标事件子类型,似乎与来自IOLLEvent.h. 但是,我对查找系统定义的 CGEvents 的子类型特别感兴趣。

这些将是NX_SUBTYPE_AUX_CONTROL_BUTTONS下面的 等或 CG 替代品。

0 投票
0 回答
132 浏览

macos - NSView 不触发 keyEvent

我做了一个定制NSView并实现了这个keyDown:方法。但是,当我按键时,该方法永远不会被调用。我怎样才能收到这些事件?keyDown:我的自定义视图中有覆盖方法

并在类似的子类中创建NSView方法

我也调用了上述方法的方法,initWithFrame:但没有得到keyEvent:这个观点 因此,如果有任何错误,请更正我的错误,并给我一些提示,告诉我如何在自定义视图上获取 keydown 事件。

0 投票
1 回答
1056 浏览

objective-c - NSEvent addGlobalMonitorForEventsMatchingMask 在 CLI 应用程序上不起作用

我是 Obj-C 和 Cocoa 的新手。我正在尝试开发一个非常简单的命令行应用程序,它在启动时等待一些全局鼠标事件,并在完成后退出。我已经正确实现了一个 NSRunLoop 以避免 cli 应用程序立即完成,但我似乎无法掌握监听鼠标事件的事件。

我正在使用这个片段:

我是我的 CLI 应用程序,尽管它可以正确编译,但它根本不会触发任何东西,而如果粘贴在 appDelegate 类的 applicationDidFinishLaunching 方法中的空白 Cocoa 应用程序中,它就可以正常工作。

我错过了什么?谢谢!

pd:我不是 100% 确定这是我需要的 CLI。我也可以是一个不可见或无头的应用程序,没有窗口、菜单项或任何相关的东西,只是一个运行几秒钟直到满足条件的进程。

0 投票
2 回答
1736 浏览

cocoa - 根据点击位置丢弃 NSWindow 上的鼠标事件

假设我有一个浮动的、无边界的圆形NSWindow.

它是圆形的,因为内容视图只是简单地绘制了一个红色圆圈。

该内容视图需要有图层支持 ( [contentView setWantsLayer:YES]),因为我在其上应用了CoreAnimations,例如动画缩放。

通常,NSWindow 的可点击区域由内容视图的像素透明度定义。然而,不幸的是,一旦 NSWindow 的内容视图变为 layer-backed,透明区域也会收到点击。

就我而言,这是一个严重的问题,因为我只想接收半径范围内的点击。但是现在,在窗口的矩形内点击,但超出圆半径,将激活窗口(因此,整个应用程序),这是不应该的。窗口也可以通过其内容视图的一角拖动。

点击位置

我最初的想法是[NSWindow sendEvent:]在子类中实现并检查是否在半径内执行了点击,使用[theEvent locationInWindow]. 我想我可以简单地丢弃该事件,如果它超出了半径,[super sendEvent:theEvent]那么不调用。然而这并没有奏效:我注意到,mouseDown:; window 方法甚至在 sendEvent 之前被调用:;方法。

我搜索了很多,但我发现的唯一想法是在窗口顶部有一个像非层支持的 NSWindow 这样的代理,它有条件地委托点击,但这会导致不可预测的 UI 行为。

各位大佬有什么思路,怎么解决?

0 投票
2 回答
1764 浏览

cocoa - How to capture Unicode from key events without an NSTextView

I'd like to capture key events from any window in the application and interpret them as Unicode. For example, if the user types Option-e-e (on a default-configured US English keyboard), I would like to recognize that as "é".

I tried capturing keypress events and calling -[NSEvent characters]. However, as it says in the documentation, "This method returns an empty string for dead keys, such as Option-e." If I type Option-e-e, then it gives me nothing for the Option-e and plain "e" for the second e.

Is there a way to combine a series of keycodes (from -[NSEvent keyCode]) into a Unicode character?

Or a way to receive an event for each Unicode character typed (like Java's key-typed event)?

0 投票
2 回答
1710 浏览

macos - Detect any key press, including modifier keys, on OS X

I need to detect all the keys that the user presses. Using -keyDown: I can get most key presses (alphanumeric, function keys, arrows, space bar, escape, return), but I cannot get any modifier key when it's pressed alone.

How do I detect absolutely any keystroke, including modifier keys?