使用CGDisplay显示窗口时,文本字段显示为不可编辑

时间:2011-06-08 15:44:49

标签: objective-c cocoa macos nswindow nstextfield

我正在申请:

  1. 当用户选择显示菜单选项时 - >窗口显示在整个屏幕上
  2. 当用户选择隐藏菜单选项时 - >整个屏幕上可见的窗口被隐藏。
  3. 问题是 -

      

    当我执行步骤1然后步骤   然后是第2步,窗口没有   出现在第一个出现   时间。

    任何人都可以建议我,我该如何解决?

    以下是代码的一部分:

    - (IBAction)hideMenuAction:(id)sender
    {   
        [window orderOut:nil];
        if (CGDisplayRelease( kCGDirectMainDisplay ) != kCGErrorSuccess) {
               NSLog( @"Couldn't release the main display!" );
            }
    }
    
    - (IBAction)displayMenuAction:(id)sender
    {
        [window makeKeyAndOrderFront:nil];
            if (CGDisplayCapture( kCGDirectMainDisplay ) != kCGErrorSuccess) {
               NSLog( @"Couldn't capture the main display!" );
            }
        [window setLevel:CGShieldingWindowLevel()];
    }
    

    编辑:

    当我放置代码行时问题得到解决:[window makeKeyAndOrderFront:nil];在displayMenuAction中的if块下面。使用的代码是 -

    - (IBAction)displayMenuAction:(id)sender
    {
         if (CGDisplayCapture( kCGDirectMainDisplay ) != kCGErrorSuccess) {
               NSLog( @"Couldn't capture the main display!" );
            }
        [window makeKeyAndOrderFront:nil];
        [window setLevel:CGShieldingWindowLevel()];
    }
    

    但我已经开始面临一个新问题:

      

    当我执行步骤1然后步骤   第二步然后是第一步,窗口上的文本字段是   出现不可编辑的。我试着设定   它们在代码中可编辑但却没有   工作

    请建议。

1 个答案:

答案 0 :(得分:1)

是否在笔尖中定义了窗口?如果是,那么“关闭时释放”复选框是否有效?如果是,当窗口关闭时,它将被解除分配。