【问题标题】:Objective C, HUD Panel?目标 C,HUD 面板?
【发布时间】:2012-04-01 02:55:31
【问题描述】:

我有一个 HUD 面板,它有几个按钮、一个标签和一个用户可以输入的文本字段。 现在它工作得很好,除了我想摆脱标题栏。 摆脱标题栏真的很容易,因为我可以在界面构建器中取消选中“标题栏”。问题是,当我摆脱标题栏时,它变得不可编辑,因此用户无法在文本字段中输入任何内容。 为什么会这样,我该如何解决?

我知道我可以通过编程自己编写一个自定义窗口,但我真的只需要删除标题栏,并且我已经使用构建器设置了其他所有内容,所以我想找到一种简单的方法来解决这个问题, (希望)如果有的话。

提前致谢。

【问题讨论】:

    标签: objective-c xcode macos interface-builder osx-lion


    【解决方案1】:

    您需要做的就是:

    子类你的 NSPanel 并覆盖 canBecomeKeyWindow 作为 rdelmar 提到的。

    你可以这样做:

    创建面板类:

    .h

    @interface panel : NSPanel {
    
    }
    
    @end
    

    .m

    #import "panel.h"
    
    @implementation panel
    
    -(BOOL)canBecomeKeyWindow
    {
        return YES;
    }
    
    @end
    

    不要忘记将面板的类更改为您在身份检查器中创建的类。

    【讨论】:

    • 感谢您的回答,但我最终以编程方式创建了一个自定义窗口,因为还有一些其他问题。不过谢谢。
    【解决方案2】:

    您需要覆盖 canBecomeKeyWindow 并返回 YES。

    来自文档:如果窗口有标题栏或调整大小栏,则 NSWindow 实现返回 YES,否则返回 NO。

    【讨论】:

    • 我也尝试了 canBecomeKeyWindow 和其他东西(如stackoverflow.com/questions/5013695/… 中所述),但它仍然不起作用。也许是因为它是一个面板而不是一个窗口?
    • @Dennis,不是这样。我使它与面板一起工作。我只是将 NSPanel 子类化并添加了一个方法:- (BOOL)canBecomeKeyWindow {return YES;}
    • 是的..我对面板和其他东西的子类化感到困惑,但现在我让它工作了,除了我把它改成一个窗口,因为我也更容易设置其他东西。无论如何谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多