如何还原 keyWindow (NSView - Appkit)

How to restore keyWindow (NSView - Appkit)

提问人:Nathaniel Perez 提问时间:1/17/2017 最后编辑:Nathaniel Perez 更新时间:1/18/2017 访问量:85

问:

我有一些代码可以打开一个模式窗口(它本身由几个视图组成),并在我们单击它的任何位置时将其关闭。

以下是代码的某些部分:

int myFunc()
{
    // Create views
    NSPanel *panel =  ...;

    CustomNSTextView * textView = ... ;
    CustomNSImageView * imageView = ...;

    [view addSubview:textView];
    [view addSubview:imageView];
    [panel setContentView:view];

    [[NSApplication sharedApplication] runModalForWindow:panel];

    NSView* parentView = [view superview];
    [[parentView window] makeFirstResponder:parentView];


    [textView release];
    [imageView release];
    [view release];
    [panel release];
}

@implementation CustomNSTextView : NSTextView

- (void) mouseDown:(NSEvent *)theEvent
{
#pragma unused(theEvent)
    [[NSApplication sharedApplication] stopModal];
}

@implementation CustomNSImageView : NSImageView

- (void) mouseDown:(NSEvent *)theEvent
{
#pragma unused(theEvent)
    [[NSApplication sharedApplication] stopModal];
}

错误是在窗口关闭后,应用程序(启动模式窗口)将不再接收任何键事件(而它仍然处于模式窗口打开状态)。 只有在我重新关注应用程序后,它才会再次接收关键事件。

请任何人给我一些想法,我在网上找不到相关的东西。

谢谢 纳 撒 尼尔

Objective-C NSView AppKit 密钥窗口

评论

0赞 Willeke 1/17/2017
是无的吗?如果没有,请不要让面板成为第一响应者。parentView
0赞 Nathaniel Perez 1/17/2017
不,parentView 不是 nil。我不明白建议,这意味着“不要让小组成为第一响应者”。是什么让你这么说?
0赞 Willeke 1/18/2017
[[parentView window] makeFirstResponder:parentView];尝试查看面板第一响应者。
0赞 Nathaniel Perez 1/19/2017
真?为什么?parentView 不应该是创建面板的窗口吗?
0赞 Willeke 1/20/2017
不,是 和 在同一窗口 = 面板中的超视图。parentViewview

答: 暂无答案