【发布时间】:2012-04-21 13:55:16
【问题描述】:
我正在努力弄清楚为什么我的视图没有在拖动时调整我的 NSWindow 的大小。
好的,这是我的结构:
- NSWindowController 的子类视图(使用自动布局检查窗口。自动调整大小检查视图。窗口的视图没有连接到 IB 中的任何东西,应该是吗?)
- 各种按钮
- 自定义视图(选中自动调整子视图大小)
- 子类化 NSViewController 的视图 (选中 Auto Resizes Subviews & Translates Mask)
- 各种子视图(选中自动调整子视图大小)
- 子类化 NSViewController 的视图 (选中 Auto Resizes Subviews & Translates Mask)
- 各种子视图(选中自动调整子视图大小)
- 子类化 NSViewController 的视图 (选中 Auto Resizes Subviews & Translates Mask)
我将这些视图中的每一个添加到我的 NSWindowController 的自定义视图中。这是我文件中唯一相关的方法:
-(void)setActiveView:(NSString*) viewString{
if ([currentViewController view] != nil)
[[currentViewController view] removeFromSuperview];
if ([viewString isEqualToString:kFirstView]){
FirstViewController *viewController = [[FirstViewController alloc]initWithNibName:kFirstView bundle:nil];
if (viewController != nil){
currentViewController = viewController;
}
}
else if ([viewString isEqualToString:kSecondView]){
SecondViewController *viewController = [[SecondViewController alloc]initWithNibName:kSecondView bundle:nil];
if (viewController != nil){
currentViewController = viewController;
}
}
//Resize Controller to Window's size.
[[currentViewController view] setFrame:[myWindowView bounds]];
//Embed current view into Custom View in host view.
[myWindowView addSubview:[currentViewController view]];
}
当我改变视图时,调整大小的 setFrame 确实有效,但当我拖动以调整窗口大小时则无效。据我所知,因为 setFrame 在我更改视图时起作用,所以唯一真正重要(但不起作用)的是我的 NSWindowController 中的自定义视图。
另外,这就是我将这个窗口向前推进的方式:
myController = [[MyWindowController alloc]initWithWindowNibName:@"MyWindow"];
[myController showWindow:nil];
是的,我已经在我的 initwithframe 中尝试过:
[myWindowView setAutoresizesSubviews:YES];
[myWindowView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
我错过了什么?
【问题讨论】:
-
尝试在您的窗口中仅使用一个控制器,并将所有其他视图放入该控制器的视图中。我不太确定,但 iphone 有一个问题,即 UIWindow 仅将 UI 事件发送到其子数组中的第一个控制器。你的情况可能是这样的。
标签: objective-c macos nswindow nsviewcontroller autoresizingmask