NSOpenGLView、NSWindow 和 NSResponder - makeFirstResponder 不工作

2024-05-01

在下面的代码中我正在初始化NSViewController[NSResponder],带有NSWindow, a NSOpenGLView,呈现视图并尝试设置NSViewController作为 Windows 第一响应者。

它不起作用。我期望能够在keyUp: and keyDown:方法也在下面,但什么也没有发生。

我错过了什么吗?

-(void)initwithFrame:(CGRect)frame 
{
    window = [[MyNSWindow alloc] initWithContentRect:frame styleMask:NSClosableWindowMask | NSTitledWindowMask backing:NSBackingStoreBuffered                           defer: YES ];   


    OpenGLView* glView = [[[OpenGLView alloc] initWithFrame:window.frame] autorelease];

    window.contentView = glView;

    [window makeFirstResponder:self];   
    [window makeKeyWindow];     

    [window display];   
}   

-(void)keyDown:(NSEvent*)theEvent
{
    unichar unicodeKey = [ [ theEvent characters ] characterAtIndex:0 ];
    unicodeKey = 0;
}

-(void)keyUp:(NSEvent *)theEvent
{
    unichar unicodeKey = [ [ theEvent characters ] characterAtIndex:0 ];
    unicodeKey = 0;
}

回到这个问题,其实问题出在别的地方。

我一直在使用这个睡眠功能来控制应用程序的帧速率:

void System::Sleep(double seconds)
{
    NSDate* limit       = [NSDate dateWithTimeIntervalSinceNow:seconds];
    NSRunLoop* runLoop  = [NSRunLoop currentRunLoop];

    [runLoop runUntilDate:limit];
}

这样做似乎会完全冻结系统并阻止关键事件。

相反,使用它来安排更新功能:

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

NSOpenGLView、NSWindow 和 NSResponder - makeFirstResponder 不工作 的相关文章

随机推荐

  • 以编程方式在 Material-UI 中打开工具提示

    我需要能够向元素添加工具提示 以便它像正常一样运行 当元素悬停时打开 同时我需要能够以编程方式打开它 我知道它有openprop 允许这样做 但在这种情况下 我会将组件从不受控制切换到受控制 这是不可能的 我也无法总结 hover工具提示内
  • 在 WPF FlowDocument 中的指定位置插入超链接

    我想以编程方式将 WPF 超链接元素插入 FlowDocument 中 目标是创建一个工具栏按钮 该按钮将获取 RichTextBox 中的一系列文本并将其替换为超链接 它与您在网络上看到的用于在 wiki 或博客 或 StackOverf
  • SwiftUI 模态视图

    从任何类或结构中模态显示 SwiftUI 视图的最佳方式是什么 我使用 UIKit 中的 UIHostingController 有没有更好的方法只使用 SwiftUI 来做到这一点 带有用于呈现 SwiftUI 视图的按钮的 Conten
  • g++ 变量名有长度限制吗?

    看标题 简短回答 No 长答案 是的 它必须足够小才能适合内存 但否则就不行 不是真的 如果有一个内置的限制 我不相信有 那么它太大了 你真的很难达到它 事实上 你让我很好奇 所以我创建了以下 Python 程序来生成代码 usr bin
  • Xamarin HttpClient.GetStringAsync 不适用于 Xamarin.Droid

    我在 Xamarin 开发方面确实是个新手 我刚刚尝试使用 Xamarin Forms 使用共享代码开发 Android 和 iOS 应用程序 而我在这里尝试做的是使用 Plugin RestClient NuGet 包从 API 获取数据
  • 为什么 docker-compose ps 与 docker ps 不同?

    为什么 docker compose 创建的容器只能从 docker compose ps 访问 并且在杀死正在运行的容器后仍然存在 事实并非如此 docker ps只显示正在运行的容器 docker compose ps显示与当前撰写文件
  • 孤独的开发人员但有大量的 xhtml css jquery 工作?我应该使用版本控制系统吗?

    它对于单用户单台 PC 有用还是太过分了 我可以使用任何版本控制系统来节省时间并提高生产力吗 如果答案是肯定的 那么哪种免费版本控制系统最适合我以及如何节省时间 我在家和办公室工作 这两个地方我都可以上网 我想从这两个地方访问源代码 Upd
  • gitosis 要求输入密码

    我已经按照以下说明设置了 gitosis 服务器here http scie nti st 2007 11 14 hosting git repositories the easy and secure way 它对于初始用户来说效果很好
  • 生成唯一硬件 ID 的可靠方法

    问题 我必须为每个联网客户端提供唯一的 ID 例如 一旦客户端软件安装在目标计算机上 它 ID 应该持续存在 并且如果在同一台计算机和相同的操作系统安装上重新安装软件 它应该继续存在 如果以大多数方式修改硬件配置 除了更改主板 它不应该改变
  • string_agg 没有函数与给定名称匹配

    我有关系数据库并想使用string agg 因为它似乎适合我的需要 I want product id quiz id 1 1 6 2 2 7 3 3 8 4 4 这是我的数据库 select quiz id product id last
  • 使用 Javadoc -link 选项链接到 javadoc.io

    我正在尝试使用以下链接链接到 javadoc io 上托管的一些 Javadoc 特别是 PowerMock 的 Javadocs link选项 我尝试将 PowerMock 的 Javadocs 的 URL 添加到我的 link标志 但无
  • C# 小数取上限2

    我想将小数值四舍五入 例如 2 2222 到 2 23 当我使用圆形时 decimal a Math Round decimal 2 222 2 当我使用天花板时 会导致 3 decimal c Math Ceiling decimal 2
  • Fortran PURE 函数可以使用全局参数吗?

    在我看来 Fortran 中所谓的纯函数对于那些使用函数式编程的人来说似乎不够纯粹 这是我的问题 假设我有以下代码 MODULE basics IMPLICIT NONE INTEGER PARAMETER dp kind 1 0d0 RE
  • 为什么可变长度数组不是 C++ 标准的一部分?

    过去几年我很少使用C 当我阅读时这个问题 https stackoverflow com questions 1886504 coding problem using a 2 d array of structs inside anothe
  • Django:当管理模板已被覆盖时,无法覆盖它们吗?

    要将一些内容添加到模型的 Django 管理视图中 我想覆盖change form html模板 根据文档 https docs djangoproject com en 1 4 ref contrib admin overriding a
  • UnsatisfiedDependencyException:创建 bean 时出错(通过 BeanNotOfRequiredTypeException)

    我尝试使用 Spring MVC 和 Hibernate 运行我的第一个 Web 应用程序 但遇到了一些问题 通用道 Repository public abstract class GenericDao
  • 如何在 TypeScript 中从字符串数组创建类型?

    基于字符串数组创建 TypeScript 类型的最佳方法是什么 我的版本是2 6 2 该数组很长 我不想通过在枚举声明中复制字符串值来重复自己 我想做的是这样的 const colors red orange yellow green bl
  • AWS Session Manager 未获取 bashrc

    我在用AWS 系统管理器会话管理器 https docs aws amazon com systems manager latest userguide session manager html连接到我的 EC2 实例 当我连接时 会话不会
  • iPhone Mobile Safari,最大并行 http 连接数是多少?

    我想在 iPhone Mobile Safari OS4 中使用并行 AJAX HTTP 请求 最大并行连接数是多少 如果我没记错的话 Safari 最多使用 4 个到同一服务器的连接 但您可以使用以下命令自行测试这个小测试用例 http
  • NSOpenGLView、NSWindow 和 NSResponder - makeFirstResponder 不工作

    在下面的代码中我正在初始化NSViewController NSResponder 带有NSWindow a NSOpenGLView 呈现视图并尝试设置NSViewController作为 Windows 第一响应者 它不起作用 我期望能