如何为从 NIB 加载的 NSWindow 提供焦点?

2023-12-12

我在用着NSWindowController从 NIB 加载窗口。然而,当我打电话时showWindow:,该窗口在视觉上位于最上面,但焦点仍保持在原来的位置(而不是将其移动到新窗口)。

It's easy to see this happening when the first window (with keyboard focus) is moved slightly, before creating the new window (via cmd+n). This is the result:

The bottom, focused window is the original window. The unfocused window on top is the newly created window.

这是相关代码:

AppDelegate.h:

- (IBAction)newDocument:(id) sender;

AppDelegate.m:

- (IBAction)newDocument:(id) sender {
    [[[FooController alloc] init] showWindow:self];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [self newDocument:self];
}

FooController.h:

@interface FooController : NSWindowController { }
@end

FooController.m:

- (id)init {
    self = [super initWithWindowNibName:@"FooWindow"];
    return self;
}

FooWindow.xib:
全新创建的 Window xib,未经修改。

主菜单.xib:
默认的 MainMenu.xib,其窗口被删除。

Calling makeKeyAndOrderFront:在控制器的窗口上windowDidLoad方法似乎没有聚焦到新窗口。将 FooWindow.xib 的文件所有者设置为FooController似乎也没有帮助。

从 NIB 加载和显示窗口以使其接收键盘焦点的正确方法是什么?

Edit:看起来像NSWindowController's window方法返回nil,这解释了为什么调用方法window没有做任何事情。但为什么会这样nil?


好的,我找到了这个问题的原因。

xib 的文件所有者必须设置为控制器,并且(这是我不知道的部分)您必须连接控制器的window出口到窗口本身。

这样做之后,它就起作用了。不makeKeyWindow, makeMainWindow or makeKeyAndOrderFront: needed.

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

如何为从 NIB 加载的 NSWindow 提供焦点? 的相关文章

  • NSPersistentStoreCoordinator 线程安全吗?

    我正在开发一个使用 Core Data 的 iPhone 应用程序 该应用程序调用 Web 服务 解析生成的 XML 文件 然后在我的应用程序中创建或修改 Core Data 对象 我已经处理了 Web 服务调用并异步解析 但我一直将解析后
  • 获取实体中某个值的最大值

    我正在尝试获取核心数据中实体中属性的最大值 苹果有一个很好的例子here http developer apple com library mac documentation Cocoa Conceptual CoreData Articl
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效
  • 如何在 NSTextView 中使用 SPACE 而不是 TAB

    我只知道如何修改 NSTextView 中的制表符宽度 NSMutableParagraphStyle paragraphStyle self defaultParagraphStyle mutableCopy paragraphStyle
  • NSNotificationCenter 为“观察者”和“对象”保留什么类型的引用?

    任何人都可以澄清 阐明有关情况 NSNotificationCenter addObserver selector name object 观察者 和 对象 参数的通知中心保留哪些类型的引用 从通知中心删除观察者的最佳实践是什么 多线程应用
  • 在可可中将 NSMutableArray 写入文件时出现问题

    一个真正的初学者问题 我有一个 NSView 子类 在其中创建一个包含 NSValues 的 NSMutableArray 当我想使用 writetofile atomatically 将数组写入文件时 文件已创建 但它不包含可变数组所包含
  • 在完成块中保留循环

    在我的课堂上 我创建了这个方法 void refreshDatasourceWithSuccess CreateDataSourceSuccessBlock successBlock failure CreateDataSourceFail
  • NSTextField 字体样式在选择时重置

    Context 在 Interface Builder 中 我有一个不可编辑的标签 NSTextField 标签的内容是使用 Cocoa Bindings 创建的 绑定的值是NSAttributedString 使用数值转换器创建 看图片
  • NSObject的retain方法是原子的吗?

    NSObject的retain方法是原子的吗 例如 当从两个不同的线程保留同一个对象时 是否允许保留计数增加两次 或者保留计数是否可以只增加一次 Thanks NSObject以及对象分配和保留计数函数都是线程安全的 请参阅附录 A 线程安
  • Playground 中未声明的类型“NSView”

    对于 OSX Playground 我输入以下代码 import Cocoa class PlayView NSView override func drawRect dirtyRect NSRect let blue NSColor bl
  • NSSortDescriptor 和 nil 值

    我正在使用 NSSortDescriptor 按升序对 NSDate 对象进行排序 但是 我需要将零日期放在列表的底部 而目前它们位于列表的顶部 最后 我决定拥有 nil 值不是一个好主意 如果我希望 nil 值出现在升序列表的底部 我应该
  • 为什么某些 Objective-C 文件名中带有减号或加号

    在我想要添加到项目中的库中 有一个名为 NSString Base64Extensions h 带有 NSString Base64Extensions m 的文件和一个名为 NSString PECrypt h 带有 NSString P
  • 将 NSAlert 设为最顶层窗口?

    我在应用程序中创建了主窗口以进行以下设置 self setLevel kCGDesktopWindowLevel 1 self setCollectionBehavior NSWindowCollectionBehaviorCanJoinA
  • 如何在使 NSTimer 失效后“验证”它?

    所以基本上 我有一个计时器 当它收到按键事件时应该重复 并在用户释放按键时无效 但是 即使通过调用 我也无法 验证 计时器addTimer forMode 在 NSRunLoop 中 有谁知道为什么会发生这种情况以及我该如何解决这个问题 谢
  • 以编程方式更改分辨率 OS X

    我的问题很简单 我正在开发一款游戏 正如标题所述 我希望能够以编程方式更改 OS X 上的显示分辨率 刷新率 我已经搜索了几个小时 但找不到任何东西 我已经知道如何创建全屏窗口 我还想获取支持的分辨率和刷新率的列表 来自苹果的适用于 Mac
  • 创建 DOMElement Objective C 的位图

    我有一个 Webkit DOMElement 例如一个 div 现在我想要它的渲染 NSImage 或 NSBitmapImageRep 它就像 DOMElement 的屏幕截图 公共 API 选择 NSView cacheDisplayI
  • Cocoa 常量名称中的“k”代表什么[重复]

    这个问题在这里已经有答案了 可能的重复 Apple 的 API 中的 k 前缀表示什么 https stackoverflow com questions 675816 what does the k prefix indicate in
  • 如何阻止我的应用程序设置“隔离”位?

    从 OS X 10 7 3 开始 我的文本编辑器就在它接触的任何文件上设置 隔离 位 我的文本编辑器设计用于处理 shell 脚本 如果设置了隔离位 则无法从命令行执行 shell 脚本 直到您在 Finder 中双击它并浏览 此应用程序是
  • Cocoa 的 NSDictionary:为什么要复制键?

    所有在 NS Mutable Dictionaries 中用作键的对象都必须支持 NSCopying 协议 并且这些对象在字典中使用时会被复制 我经常想使用较重的对象作为键 只是将一个对象映射到另一个对象 当我这样做时 我真正的意思是 di

随机推荐

  • 在设备上的线性内存中循环二维数组时将 float* 转换为 char*

    CUDA 4 0 编程指南第 21 页上有一个示例 如下所示 来说明循环 设备内存中二维浮点数组的元素 2D 的尺寸为宽 高 Host code int width 64 height 64 float devPtr size t pitc
  • Google Drive CSS/JS 返回 404 错误

    我在 Google Drive 上托管了我的 CSS JS 但它突然停止工作 在 Chrome Safari Mac iPhone 上测试过 检查后用Chrome 我看到 Google Drive 的链接返回 404 还有其他人有过吗 Go
  • 如何在加权networkx图中找到总和最高的路径?

    我有一个有向网络加权图 如何找到权重和最大的路径 您可以使用all simple paths并检查最大值 假设您有一个采用路径并给出权重总和的函数 heaviest path max path for path in nx all simp
  • Java 约定中的 Getters 和 Setters [重复]

    这个问题在这里已经有答案了 我的 Java 有点生疏 过去几年一直在做 C 我也希望这不会是一个非常主观的问题 不管怎样说我有课Person 是的 我知道有点陈词滥调 没有任何行为 C 版本 public class Person publ
  • 如何使用 pandas/sklearn 删除停止短语/停止 ngram(多单词字符串)?

    我想防止某些短语渗入我的模型 例如 我想阻止 红玫瑰 进入我的分析 我了解如何添加单独的停用词 如将单词添加到 scikit learn 的 CountVectorizer 的停止列表中通过这样做 from sklearn feature
  • Javascript - 日期范围验证

    我有一个表单用户可以输入任何日期 但我想设置一个日期范围验证 例如 从2012年12月1日到2013年1月1日 系统无法接受不在该范围内的用户的任何日期 我已经尝试过这个javascript代码 但它甚至没有给我任何警报当日期不在范围内时
  • 访问 C#.net 中的 webbrowser 控件中呈现的框架

    我需要获取 C net 中的 webbrowser 控件呈现的页面中的链接 问题是我认为该页面使用框架 这就是为什么我无法从网络浏览器获取任何链接 我如何访问或查看网络浏览器控件中的那些框架 你可以使用Frames财产 webBrowser
  • 函数属性与泛型的 TypeScript 组合

    此类型的要点是允许用户传入数据 颜色 hasColor or 数据 信息 hasInfo 不是任何其他组合 type Props data string info string hasInfo boolean color never has
  • Python Plotly 图表更新有两个下拉菜单

    我正在尝试在 Jupyter Lab 中构建一个绘图散点图 以便能够查看 DataFrame 中各个列之间的依赖关系 我想要两个下拉菜单 对应于 X 轴和 Y 轴 每个菜单中都有 DF 列的完整列表 当我在任何菜单中选择一列时 相应轴上的数
  • iOS 基本 FTP 设置;读写流

    我正在尝试创建一个具有一些非常基本的 FTP 功能的 iOS 5 应用程序 并且需要一些指导 它将连接到本地网络上的设备并使用 dat txt 文件执行读 写操作 在过去的几天里 我进行了一些搜索 并看到了各种建议 但没有什么足够简单 我可
  • 如何实现“回收站”功能?

    我正在开发一个 Java 桌面应用程序 需要在其中实现回收站功能 现在 我使用桌面应用程序将文件复制到名为回收站的文件夹中 然后删除原始文件 我将目标路径存储在一个文本文件中 其中文件被删除 只是为了将文件恢复到原始位置 恢复文件时 我只是
  • 如何使用 mysql 创建每周队列分析表?

    假设您有一个用户表 其中至少包含用户注册的日期和 ID 现在 假设您有一个单独的表 用于跟踪可能在用户生命周期中的任何时刻发生的操作 例如付款 比如应用内购买 在该表中 我们跟踪用户 ID 付款日期和付款 ID 所以我们有类似这样的东西来设
  • 使用地理编码初始化 React Google Maps StandaloneSearchBox

    有人可以告诉我如何使用类型初始化React Google Maps的StandaloneSearchBox组件 geocode 就像原始的google maps places Autocomplete一样 这样我就可以限制自动完成的输入建议
  • 使用 Json.Net 在 C# 中解析 Json

    Posts id 1 title Bibidh prothom khondo content sjih sdkljjdsf kdjsfjks author last update 23 june 2013 Comments id 1 con
  • 复选框 + Jquery 隐藏/显示

    我有一系列的行和复选框来过滤它们 ul li li ul
  • 表中可编辑字段之间的 Tab 键切换

    我正在使用这里的代码http www korvus com blog geek making the tab key work with jeditable fields 在 jeditable 字段之间进行制表符工作 如果这些字段是独立的
  • INSERT 语句与 FOREIGN KEY 约束“FK_PostTag_Tag_TagId”冲突

    我在用实体框架 7 RC1我有实体 public class Post public Int32 Id get set public String Title get set public virtual IList
  • 最后进入异常处理

    到底是什么作用finally阻止异常处理执行 它保存应该始终执行的代码 无论是否发生异常 例如 如果您打开了一个文件 则应该在finally阻止以确保它始终处于关闭状态 如果您将其关闭try块 较早的异常将导致执行直接跳转到catch阻止并
  • Shunting-Yard VS 递归下降解析器

    我正在构建一个高级数学解析器 并且想知道 Shunting Yard 和其他可用解析器算法 例如 Descent Parser 之间的区别 因为我更喜欢以 RPN 表示法存储公式 提前致谢 我从来没有太多使用 调车场 算法 因为它似乎只关注
  • 如何为从 NIB 加载的 NSWindow 提供焦点?

    我在用着NSWindowController从 NIB 加载窗口 然而 当我打电话时showWindow 该窗口在视觉上位于最上面 但焦点仍保持在原来的位置 而不是将其移动到新窗口 It s easy to see this happeni