- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有多个叠加的控件,可以在某些条件下处理鼠标单击。我想要做的是:
mouseDown:
事件。mouseDown:
事件。mouseDown:
事件。本质上,我试图将事件发送到“Z-Order”位于顶部控件下方的控件,而顶部控件不需要了解其他控件或需要一些信息实例化时的特殊设置。
我想到的第一件事是将事件发送到[topControl nextResponder]
,但窗口上所有控件的nextResponder
似乎是窗口本身而不是像我之前想象的那样基于 Z 顺序的一系列控件。
有没有办法做到这一点,而无需手动设置下一个响应者?目标是获得一个独立于其他控件的控件,并且可以将其放在窗口上并按预期工作。
提前致谢!
最佳答案
您所要做的就是调用[super mouseDown:event]
。从 Mac OS X 10.5 开始(这不以前的工作方式)NSView 知道如何处理重叠 View ,并将为您处理事件。
如果您需要定位 10.5 之前的版本:这是一个非常糟糕的主意。不仅事件处理机制不知道如何处理重叠的 subview ,绘图系统也不知道如何处理,并且您可以看到一些非常奇怪的人工制品。也就是说,如果您下定决心:
覆盖自定义控件/ View 中的-[NSView hitTest:]
。 AppKit 使用此方法来确定将鼠标事件传递到层次结构中的哪个 View 。如果您返回nil
,则自定义 View 中的该点将被忽略,并且该事件应传递到覆盖该点的下一个 View 。
但请注意,由于我上面概述的原因,这仍然是一个坏主意。只是当时 AppKit 还没有正式支持它。10.4 及更早版本上更普遍接受的解决方法是使用子窗口。
关于objective-c - 如果事件不处理,则将事件发送到另一个 NSControl 下的 NSControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539386/
我有多个叠加的控件,可以在某些条件下处理鼠标单击。我想要做的是: 顶部控件接收mouseDown:事件。 顶部控件决定是否处理 mouseDown: 事件。 如果是这样,请采取措施并阻止其他控件接收
我正在尝试创建一个复杂的自定义 NSControl,它必须能够发送多条消息。 例如,鼠标悬停时必须发送一个操作,而鼠标拖动时必须发送另一个操作。 我无法理解如何将目标连接到控件并使控件向目标发送任何消
我正在 macOS 中构建一个具有动态本地化功能的 UI 应用程序(这意味着可以在应用程序运行时切换语言)。 我注意到,如果初始语言配置为日语,并且我即时切换为英语,则控件上的文本呈现正常。然而,在相
我正在使用 Swift 为 OSX 编写应用程序,我正在寻找一种在 NSControl 上捕获事件的好方法。显然,我进行了搜索,但我发现的信息往往不清楚或过时。就我而言,我想在 NSTextField
以下代码: - (void) setTarget:(id)anObject { NSLog(@"anObject: %@",anObject); [super setTarget:
我正在开发一个自定义 slider 来支持颜色选择功能。这是迄今为止当前开发的屏幕截图: 背景颜色非常灵活,还可以使用 NSSlider 中使用系统颜色实现的标准背景颜色。 该实现是通过重写 NSVi
我有一个自定义 NSControl,它充当二维 slider ,您可以在 View 周围拖动 handle 。我添加了一些类特定的方法,我覆盖的唯一方法是鼠标操作和drawRect。我的问题是,如何让
我有一个自定义控件。如果它继承自NSView,当我点击它时它会自动成为第一响应者。如果它继承自 NSControl,则不会。即使我重写 mouseDown(with:) 并且不调用 super,这种行
所以我已经好几年没有研究过 Swift/Cocoa 了。我刚刚使用 Xcode 10.0 创建了一个简单的 macOS 应用程序,发现 NSControl 不再具有 addTarget(...) 方法
我有一个 NSControl 子类(它被配置为层托管 View ,尽管我怀疑这是否相关)。我一直在尝试编写代码来获取并显示上下文菜单。但是,menuForEvent: 或 rightMouseDown
我有一个问题...正在寻找与 NSControl 的 sendActionsForControlEvents(来自 iOS UIControl)类似的方法? Mac 上有类似的东西吗?我需要获取有关更
我正在创建一个菜单栏应用程序,其中包含几个弹出窗口、一个 NSMenu 和一些用于设置之类的常规窗口。我创建了一个 NSController 将所有 StatusBar 内容放在一起并通知弹出窗口打开
我构建了一个自定义 IKImageBrowserCell,它可以在 IKImageBrowser 中显示我的图像,没有任何问题。 我想尝试覆盖内置的 IKImageBrowser 删除图像功能。目前“
我来自 iOS 背景,在创建自定义控件时,您只需继承 UIControl。我正在尝试构建一个自定义的 NSSlider(一个有 2 个旋钮而不是一个)并注意到有 2 个类来处理 NSControl 和
我将要实现一个简单的音频推子。我将 NSSlider 和 NSSliderCell 子类化,以便能够相应地绘制图形。 只要在按下 Cmd 键的情况下单击 handle ,我希望 slider 跳到定义
上下文: Apple 在 macOS 上“软弃用”了 NSCell。我试图减少它在我的自定义 NSControl 子类中的使用,而是使用 CALayers 来处理我的绘图。为此,我将 NSButton
具体来说,我想让 NSTokenField 忽略鼠标事件,因为我在 NSTableCellView 中使用它只是为了以标记化方式显示数据,而不允许任何编辑。 设置标记字段的 enabled = NO
我正在寻找一个最小的可行示例。我已经用谷歌搜索和阅读了好几天了,但找不到任何最新的资源。 我的 NSControl 工作正常,但是一旦我添加 + (Class)cellClass { retu
我正在编写一些自定义布局代码来对齐一些 NSView。我循环遍历所有 View 并将它们的frame.origin.x 设置为相同的值(左对齐),但 View 看起来没有正确对齐。我在 Interfa
我已经将一个 NSSlider 子类化,无论是否按下 option 键,它的行为都不同。为此,我覆盖了 mouseDown 函数。它似乎完成了这项工作。问题是,我注意到我的 ViewControlle
我是一名优秀的程序员,十分优秀!