所以这是我的问题:
我有一个NSTextView
,其中包含大量内容(黑色背景上的白色前景,如果重要),驻留在工作表中(由beginSheet:modalForWindow:
触发)。
问题是,当我滚动时,内容似乎被隐藏了。
但是,当我将鼠标悬停在scrollview / textview上时,内容再次出现。
那是什么?为什么会这样?我怎么能避免这种奇怪的行为?
答案 0 :(得分:0)
我看了你的问题的截屏视频,看起来很像我不久前遇到的问题。我有一个启动工作表的方法,类似这样(假设存在某些值):
- (IBAction)beginSheet:(id)sender
{
[[NSApplication sharedApplication] beginSheet:sheet
modalForWindow:[self mainWindow]
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:self];
}
工作表不包含与您类似的文本视图,而是包含表格视图。有时表视图会完美地执行,但有时候,它的封闭滚动视图会不完整地绘制滚动条,并且在尝试滚动时会有大量的空白区域。
我设法确定只有在辅助线程上调用-beginSheet:
时才会发生不良行为。
为了解决这个问题,我采用了这种方法:
- (void)beginSheetOnMainThread:(id)sender
{
[[NSApplication sharedApplication] beginSheet:sheet
modalForWindow:[self mainWindow]
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:self];
}
- (IBAction)beginSheet:(id)sender
{
[self performSelectorOnMainThread:@selector(beginSheetOnMainThread:) withObject:sender waitUntilDone:YES];
}
并且表视图的行为一致且正确。
(我后来了解到使用dispatch_async()方法与主队列和块一起运行也很好。)
我为轶事证据道歉,因为我知道这仍然无法解决您的特定问题。但是,再次看到你的截屏视频后,我发现这些症状非常熟悉。