用作contentView时,NSTextView失败

时间:2011-02-15 10:31:45

标签: objective-c cocoa

我以编程方式创建NSTextView作为窗口的contentView。当我使用以下代码创建WebView时,它会显示滚动条和调整大小的缩略图,并且可以完美地调整窗口大小。

当我注释掉WebView并尝试使用NSTextView作为contentView时,在调整窗口大小时它不会“工作”:使用拇指调整窗口大小会导致文本视图的内容无法正确重绘,还绘制了窗口的标题,并且重新调整大拇指也没有重新绘制。

-(void)applicationDidFinishLaunching:(NSNotification*)aNotification{
  NSTextView* view = [[NSTextView alloc] initWithFrame:[window frame]];
  // WebView* view = [[WebView alloc] initWithFrame:[window frame]];

  [window setContentView:view];
  [window makeFirstResponder:view];
  [window makeKeyAndOrderFront:view];  
}

编辑:工作代码。创建一个NSScrollView作为windows new contentView,并添加一个NSTextView作为其文档。

-(void)applicationDidFinishLaunching:(NSNotification*)aNotification{
  NSScrollView* scrollView = [[NSScrollView alloc] initWithFrame:[window frame]];
  NSTextView* view = [[NSTextView alloc] initWithFrame:[scrollView bounds]];
  [window setContentView:scrollView];
  [scrollView setDocumentView:view];
  [scrollView setHasVerticalScroller:YES];
  [scrollView setHasHorizontalScroller:YES];

  [window makeFirstResponder:view];
  [window makeKeyAndOrderFront:view];  
}

1 个答案:

答案 0 :(得分:3)

Web视图制作并管理自己的滚动条,这是一种特殊情况,而不是常态。 NSTextView没有。这只是文本视图。这是常态 - 只有在Interface Builder的帮助下,可滚动视图才会预先包装在NSScrollView中。在代码中,您还必须创建NSScrollView,然后将视图包装在其中。在这种情况下,滚动视图将是您的顶级视图。