Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSC文档和键盘(如按键)_Objective C_Cocoa_Nsdocument - Fatal编程技术网

Objective c NSC文档和键盘(如按键)

Objective c NSC文档和键盘(如按键),objective-c,cocoa,nsdocument,Objective C,Cocoa,Nsdocument,我试图阅读苹果的文档,但我找不到任何地方如何将关键事件空间或其他内容捕获到NSDocument应用程序中 和initialFirstRepsodner如果我理解的很好,那是不可能的 有什么想法吗 谢谢大家! Andrea如果您想捕获到窗口的所有事件,可以将其子类化并覆盖-sendEvent:。如果要捕获整个应用程序中的所有事件,可以在NSApplication子类中重写相同的方法 我试图阅读苹果的文档,但我找不到任何地方如何将关键事件空间或其他内容捕获到NSDocument应用程序中 您希望为什

我试图阅读苹果的文档,但我找不到任何地方如何将关键事件空间或其他内容捕获到NSDocument应用程序中

和initialFirstRepsodner如果我理解的很好,那是不可能的

有什么想法吗

谢谢大家!
Andrea

如果您想捕获到窗口的所有事件,可以将其子类化并覆盖-sendEvent:。如果要捕获整个应用程序中的所有事件,可以在NSApplication子类中重写相同的方法

我试图阅读苹果的文档,但我找不到任何地方如何将关键事件空间或其他内容捕获到NSDocument应用程序中


您希望为什么处理关键事件?您需要实现keyDown:在某个地方,但具体在哪里取决于您打算做什么。

首先,我要感谢Peter的帮助

我使用了热键,这个示例非常有用

谢谢大家!
Andrea

我建议使用NSUserDefaults并存储共享的全局键组合,然后根据存储的首选项检查keyDown:并根据按下的键执行操作


ie:定义kMyKeyCommand@i

首先,您必须创建NSWindow的子类。 在xcode中:文件->新文件->目标C类。 给出一个类似NSWindowMyEvents的名称。这将创建2个文件:.h&.m,转到NSWindowMyEvents.h并按如下方式进行声明:

@interface NSWindowMyEvents : NSWindow {

}
保存更改并编译,以确保IB读取已打开的新标头0

打开interface builder并加载包含文档/主窗口的nib/xib文件。 确保文件所有者的窗口出口设置为主窗口。 单击要获取事件的主窗口,并通过Identity inspector cmd+6将其类设置为:NSWindowMyEvents,而不是现在的NSWindow

保存更改

返回xcode和NSWindowMyEvents.m并粘贴以下代码:

- (void)keyDown:(NSEvent *)theEvent
{
    NSLog(@"keyDown!");
    if ([[NSApp currentEvent] modifierFlags] & NSCommandKeyMask)
    {
        NSLog(@"CommandKey Down!");
    }

    [super keyDown:theEvent];
}
如果需要,将事件发送给super,以将事件传递给rest响应程序链。 您现在正在处理键盘事件。 类似地,您可以在NSWindowMyEvent.m中处理任何事件


希望这有帮助….

我不能将InitialFirstResponder设置为文件的所有者….我相信上的信息应该适用于基于NSDocument的应用程序。如果我理解得很好,这是不可能的….我不清楚。我是Cocoa dev的新手。我正在使用Apple的QTRecorder示例,因此,如果我想处理所有事件,我是否需要添加另一个属于NSDocument子类的类?我必须使用空格键开始和停止视频捕获,并使用Enter键捕获帧。我已经在我的NSDocument类上实现了keyDown,但是我不知道在nib文件中定义第一响应程序的位置。你不知道。请看我的评论,其中我解释了IB中的第一响应者图标:至于你的任务:听起来你想要一个全局热键。你根本不通过Cocoa responder链来实现这一点,而是通过一个Carbon Events热键。尽管名称不同,但仍支持64位。还有一个名为PTHotKey的第三方类,它将基于可可粉的API置于基于碳的API之上。我需要使用空格并输入key,所以我认为使用hotkey是无法实现的。使用captureOutput,我从Cam获取帧并将其存储在CImageBuffer中,使用ENTER键,CImageBuffer将保存在磁盘上。我需要空格键来启动和停止电影录制。“我需要使用空格键并输入空格键,所以我认为使用热键是无法实现的。”它们应该是。但是为什么不让它们可以定制呢?我认为几乎每个人都会对它们进行定制,因为否则它们将无法使用空间并进入你的应用程序之外。谁想切换回你的应用程序来结束录制?哦,你可以使用下面的代码来处理space ctr。。。如果[theEvent keyCode]==36。。。这是返回键