使NSPanel中的NSView成为无关键窗口状态的第一响应者

2023-12-15

是否可以在不提供 NSPanel 关键窗口状态(使主应用程序窗口退出关键)的情况下,为 NSPanel 内的 NSView 提供第一响应者状态?

Thanks.


好吧,我最终解决了这个问题,但是需要进行大量研究,因此我将在这里发布详细信息,以防其他人遇到同样的问题。首先,一些基础知识:

  1. 不可能同时有 2 个窗口成为关键
  2. 可以通过覆盖来伪造一个窗口,使其认为它是关键-isKeyWindow但这不会给出窗口中包含的视图第一响应者状态。

我的场景:

我添加了一个子窗口,其中包含NSTableView进入我的主应用程序窗口(原因无关紧要)。子窗口是一个NSPanel with NSBorderlessWindowMask。我想给NSTableView第一响应者状态,而不使面板成为关键窗口,因为它夺走了主窗口的焦点(子窗口幻象的全部目的是使子窗口看起来像是主窗口的一部分)。

我尝试的第一件事是通过覆盖来愚弄表格视图,使其认为它位于关键窗口内isKeyWindow回来YES。这使得表视图绘制得好像它是第一响应者一样,但仍然没有赋予它第一响应者状态。

解决方案:

所以默认情况下,NSBorderlessWindowMask 不会允许窗口成为关键。为了使表视图成为第一响应者,窗口必须是关键,所以我覆盖了canBecomeKeyWindow在无边框窗口子类中返回YES。当然,这剥夺了主窗口的关键状态,这是我想避免的事情之一。为了解决这个问题,我将我的main窗口并重写以下方法:

- (BOOL)isMainWindow
{
    return YES;
}

- (BOOL)isKeyWindow
{
    return ([NSApp isActive]) ? YES : [super isKeyWindow];
}

该子类检查应用程序是否处于活动状态,如果是,则始终返回YES这样,无论应用程序中哪个窗口处于活动状态,主窗口始终会表现得好像它仍然是关键窗口一样。这种方式给人一种错觉,即您可以同时让多个窗口成为关键,并使您能够将关键窗口状态转移到另一个窗口,而不会在主窗口上丢失它。希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使NSPanel中的NSView成为无关键窗口状态的第一响应者 的相关文章

  • Cocoa - 在另一个 xib 上显示 xib

    谁能告诉我如何 或指导我有关信息 在另一个 xib 笔尖 上显示 xib 笔尖 我希望如何放置它 以便我可以以编程方式将它移动到主笔尖 就像这样 这显然不起作用 void drawRect NSRect dirtyRect NSRect c
  • WebView 不运行 loadHTMLString 中给出的 JavaScript

    我不明白为什么这不起作用 我的桌面上有一个 test htm 文件 如下所示 This is x 2 我有一个 WebVie
  • 在 Cocoa/Carbon 下调试 NULL CGContext

    在执行程序期间 我在 XCode 调试控制台中得到以下输出
  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • 使用 Cocoa/OSX 合并/堆叠两个图像

    我有一个 CGImageRef 我们称之为原始图像 和一个透明 png 水印 我正在尝试编写一种方法将水印放置在原始内容之上 并返回 CGImageRef 在 iOS 中 我会使用 UIKit 将它们绘制到上下文中 但这在 OSX 中似乎不
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属
  • 获取 Mojave 上的鼠标坐标

    我有一个非常基本的小命令行应用程序 可以在下次单击鼠标时获取鼠标坐标 import
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • NSTextField 弹跳截断的文本而不是换行

    我想知道是否有一种简单的方法来 弹跳 或滚动NSTextField文本太长而无法显示 例如 lt scroll This is a rather large pi ece of text 因此 在此示例中 文本将滚动到末尾 显示消息的其余部
  • gdb 声称它不知道如何运行

    我在 Mac Pro 上的 Mac OS X 10 6 6 上使用 Xcode 3 2 3 来构建 GrowlTunes 的修订版 5fd480ef577f咆哮开发存储库 http growl info hg growl developme
  • NSView 中 CALayers 的简单示例

    我正在尝试将多个 CALayer 添加到 NSView 但显示时我的视图仍然为空 这是我的代码 id initWithFrame NSRect frame self super initWithFrame frame if self sel
  • Swift 和 inout 参数中闭包的变量捕获

    我注意到 当 Swift 中的闭包捕获变量时 闭包实际上可以修改该值 这对我来说似乎很疯狂 也是一种获得可怕错误的绝佳方法 特别是当同一个 var 被多个闭包捕获时 var capture Hello captured func g thi
  • 如何使用 iconutil 手动创建 icns 文件?

    当我验证我的应用程序时 出现此错误 应用程序包不包含 ICNS 格式的图标 同时包含512x512 and a 512x512 2x image 我用来制作 icns 图标Img2icns http www img2icnsapp com
  • OS X Cocoa 自动布局隐藏元素

    我正在尝试使用新的自动布局 http developer apple com library mac documentation UserExperience Conceptual AutolayoutPG Articles Introdu
  • 如何正确释放附加 C 数组中的内存?

    我只是想弄清楚为什么下面的代码会泄漏内存 并且我有一种有趣的感觉 我没有正确释放数组内存 这是一个更广泛的 Objective C 应用程序中的 C 函数 我不是 C 语言的本地人 我尝试过在数组上使用 free 但有一种感觉这不是全部故事
  • Objective C 中最好的多线程方法?

    我正在开发一个 iPad 应用程序 目前正在努力寻找多线程的最佳方法 让我用一个简化的例子来说明这一点 我有一个包含 2 个子视图的视图 一个目录选择器和一个包含所选目录中所有图像缩略图的图库 由于 下载 和生成这些缩略图可能需要相当长的时
  • iCloud Drive 内用户选择的文件夹内的垃圾文件

    我的应用程序可在任何用户选择的文件夹内处理用户 txt 文件 创建 更改 删 除 我只是在内部存储书签以访问用户选择的文件夹和文件 现在 在 macOS Catalina 中 当源文件夹位于 iCloud Drive 内时 系统仍然允许我创
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li

随机推荐

  • React 中延迟数组映射迭代

    我有这个数组 我想迭代它 我需要在下一个之前延迟几秒钟 this props things map thing index gt return div thing content div Delay 1 second here 该数组的初始
  • 项目匹配查询不存在错误?

    这是视图 def showProject request project slug project Project objects get slug project slug tickets Ticket objects filter pr
  • 为什么 autoconf 会错误地找到一个以后不可用的函数?

    在 Linux 系统上 我配置了一个软件包 llvm autoconf 找到了arc4random功能 这里是配置期间输出的提取 checking for strerror yes checking for strerror r yes c
  • 如何以 JSON 形式发送 POST 请求?

    data ids 12 3 4 5 6 urllib2 urlopen http abc example api posts create urllib urlencode data 我想发送 POST 请求 但其中一个字段应该是数字列表
  • Swift 只读外部,可读写内部属性

    在 Swift 中 定义通用模式的传统方法是什么 其中属性是外部只读的 但可以由拥有它的类 和子类 在内部修改 在 Objective C 中 有以下选项 在接口中将属性声明为只读 并使用类扩展在内部访问该属性 这是基于消息的访问 因此它可
  • 一个衬垫:从列表创建一个字典,以索引为键

    我想根据给定的列表创建一本字典 仅一行 字典的键将是索引 值将是列表的元素 像这样的事情 a 51 27 13 56 given list d one line statement one line statement to create
  • 以简单的方式导出到 Excel(但不是 CSV)

    昨天我发现了这个How To通过简单地生成 HTML 将数据导出到 Excel 电子表格 这似乎是一种直接导出带格式的单元格的方法 而仅使用 CSV 格式是无法实现的 我的想法是在Java应用程序中处理一些数据 将结果导出到Excel电子表
  • 为什么 JSLint 不允许在 for 循环中使用“var”?

    我的代码或 plovr 有问题 我去 JSLint 寻求帮助 然而 JSLint 似乎认为这是一个致命错误 并拒绝检查更多代码 for var i 0 i lt data length i 4 为什么 我喜欢这种宣告 我 的方式 如果您使用
  • 跟踪对象的“页面浏览量”或“点击量”数量?

    我确信有人有一个可插拔的应用程序 或教程 可以近似于此 但我很难找到它 我希望能够跟踪特定对象的 视图 数量 就像这里的问题一样 stackoverflow 上有一个 观看次数 如果用户没有登录 我不介意尝试放置 cookie 或记录 IP
  • Ant 使用了错误的 java 版本

    我正在使用 Ant 1 7 0 并安装了位于 JAVA HOME 中的 java 1 6 我想使用 java 1 5 构建一个项目 因此我已将 JAVA HOME 导出为我的 java 1 5 目录 java version 说 1 5 当
  • 为什么 CUDA 的示例 makefile 找不到 CUDA 库?

    我正在运行 Arch Linux 并已从存储库安装了 cuda sdk 和 cuda toolkit 我已经编译了 opt cuda sdk CUDALibraries 中的库 不 我通过在 opt cuda sdk C 中运行 make
  • 使用 Chapel 处理海量矩阵

    我最近偶然发现了 Chapel 我非常想尝试一下 我有一个双重问题 希望它能解决 我通常使用 Python 或 C 工作 当Java陷入困境时 我有两个矩阵I and V 两者都很稀疏 尺寸约为 600K x 600K 密度约为 1 首先
  • 在高清图像上应用 WebGL 滤镜会剪切图像 (fabric V2-beta-6)

    目前正在与面料2 0 6对高清图像应用滤镜 我需要在最短的时间内应用过滤器 为此 我使用 webGL 方法来应用过滤器 如下所述这里 fabric js 演示 如果您将其应用于大小 Original Image size 1 90 MB H
  • 为什么这段代码中图像下方有空格? [复制]

    这个问题在这里已经有答案了 我有以下代码 它允许红色从 a 元素中显示出来 为什么是这样 我本以为 a 元素只会扩展到内容的大小 但看起来它比这个大一点 请参阅此处的代码笔http codepen io anon pen soqEz HTM
  • React Js,我的输入在渲染时失去焦点

    嘿 我是 React js 新手 任何人都可以帮助回答这个问题 如何防止输入字段在打字时失去焦点 每次我在某个输入字段中输入内容时 该字段就会失去焦点 注 第一个 div 输入工作得很好 import React Fragment useS
  • UDF 返回的数组对于调用范围来说太大或太小

    以下函数将数组返回到工作表 我标记一个区域 键入我的函数并按 Ctrl Shift Enter 以使单元格填充记录集中的数据 但是 如果我的 CSE 函数的选定区域大于返回的记录集 我会收到 N A 如果较小 则不会发出任何警告 有没有简单
  • 将数据从表单传递到 yii2 中的控制器

    I am creating a page that has 3 fields product code startdate enddate When I click on the search button it should create
  • 如何使用 AJAX 替换 Rails 3 中的 div?

    我试图使用 RJS 替换 DOM 中的 div 这是我尝试过的代码 控制器有这个方法 def change render update do page page replace test id partial gt input locals
  • C# 使用正则表达式删除括号内的所有内容以及括号本身

    我有一个字符串 var schoolName University of Hawaii Maui Oahu Kaui 我想删除括号内的所有内容以及括号本身 以便字符串仅输出 夏威夷大学 我一直在寻找正确的正则表达式 但尚未找到执行此操作的解
  • 使NSPanel中的NSView成为无关键窗口状态的第一响应者

    是否可以在不提供 NSPanel 关键窗口状态 使主应用程序窗口退出关键 的情况下 为 NSPanel 内的 NSView 提供第一响应者状态 Thanks 好吧 我最终解决了这个问题 但是需要进行大量研究 因此我将在这里发布详细信息 以防