【问题标题】:Programmatic equivalent of "Visible at Launch" for NSWindowsNSWindows 的“启动时可见”的编程等效项
【发布时间】:2009-05-06 12:10:54
【问题描述】:

我正在尝试编写我已设置的包含两个窗口的 nib 文件的编程等效项:主窗口和启动后出现以提示输入凭据的工作表。只要记得取消选中工作表/窗口上的“启动时可见”框,在 IB 中将它们连接起来就可以了。

但是我无法弄清楚“启动时可见”的 API 等效项是什么。当我使用编程版本运行我的应用程序时,工作表被分离,而不是键视图,就像我的应用程序在“启动时可见”被选中时使用笔尖运行的方式一样。所以我的假设是,我错过了启动时可见的秘密酱汁。

有人知道怎么做吗?

附:我知道如何在 IB 中完成这项工作,我特别想找出等效的代码,所以请不要告诉我只使用 nib。我知道。

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    NSWindows 通常是隐藏的。所以你不应该做任何事情;只是在你需要它之​​前不要显示窗口。这是一个简单的例子。

    NSWindow *sheetWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO];
    NSTextField *field = [[NSTextField alloc] initWithFrame: NSMakeRect(25, 25, 50, 50)];
    [[sheetWindow contentView] addSubview:field];
    [NSApp beginSheet:sheetWindow modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:) contextInfo:NULL];
    

    当我运行上面的时候,文本字段获得了键盘焦点。

    今后,请在这种情况下提供代码——纠正现有代码比编写新代码容易得多。

    【讨论】:

    • 尼古拉斯,很抱歉缺少代码示例。我有一个简单的测试用例工作,所以现在我只需要弄清楚我的工作测试用例和我的实际代码之间有什么区别。感谢您的帮助!
    • 谢谢各位。我刚刚遇到了同样的问题,不同之处似乎是窗口本身的类型。我将我的设置为NSBorderlessWindowMask,但它不起作用。当我将其更改为 NSTitledWindowMask 时,一切都像魅力一样!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多