gpt4 book ai didi

objective-c - 在加载的 View 中选择一个控件

转载 作者:行者123 更新时间:2023-12-03 16:44:11 25 4
gpt4 key购买 nike

我有一个关于使用 NSViewController 和在 View 之间切换的问题。我有一个 Cocoa 应用程序,其中有一个窗口。该窗口的想法是,它将一一显示多个 View ,其中每个 View 都存储在单独的 XIB 文件中。每个 View 都有一个对应的 NSViewController。我制作了一个最小的示例来说明我正在做的事情,其中​​仅加载第一个 View 。

@interface MyWindowController : NSWindowController {
NSViewController *currentViewController;
}
@property (assign) IBOutlet NSView *targetView;
@end

@implementation MyWindowController

@synthesize targetView;

- (id)init
{
return [super initWithWindowNibName:@"MyWindow"];
}

- (void)dealloc
{
[currentViewController release];
[super dealloc];
}

- (void)windowDidLoad
{
[super windowDidLoad];

currentViewController = [[NSViewController alloc] initWithNibName:@"FirstView" bundle:nil];
[self.targetView addSubview:currentViewController.view];
[currentViewController.view setFrame:targetView.bounds];
}

@end

加载窗口时,FirstView.xib 中的 View 也会加载并显示在窗口中。在这种情况下,加载的 View 只有一个文本字段,我希望突出显示文本字段,以便可以直接将输入写入其中,而无需用户单击它,但我不知道如何做到这一点。加载 View 时是否可以选择文本字段?

阅读文档后,我发现我可能想将窗口的initialFirstResponder 设置为文本字段,但当文本字段位于与窗口不同的 XIB 文件中时,我找不到如何执行此操作。

最佳答案

每当您添加/替换 subview 并希望它成为第一响应者时,请让您的窗口 Controller 使该 View 成为由窗口 Controller 管理的窗口的第一响应者:

[[self window] makeFirstResponder:currentViewController.view];

您需要在 -windowDidLoad 以及任何其他添加/替换 subview 的方法中执行此操作。

关于objective-c - 在加载的 View 中选择一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com