【问题标题】:NSTextView : contents are gone when scrolling, and shown when on mouseoverNSTextView:滚动时内容消失,鼠标悬停时显示
【发布时间】:2012-04-04 05:39:08
【问题描述】:

所以这是我的问题:

我有一个 NSTextView ,其中包含很多内容(如果重要的话,黑色背景上的白色前景),驻留在工作表中(由 beginSheet:modalForWindow: 触发)。

问题是,当我滚动时,内容似乎被隐藏了。

但是,当我将鼠标悬停在滚动视图/文本视图上时,内容又出现了。

那么,那是什么?为什么会这样?我怎样才能避免这种奇怪的行为?


截屏: http://www.screencast.com/t/Sqrk2mdB

【问题讨论】:

  • 除了第一次设置文本之外,您是否对 textview 进行了任何操作?
  • @sosborn NSTextView 内容正在与后台运行的 NSTask 的输出异步填充...
  • 这可能是杀死你的原因。多久更新一次文本?
  • @sosborn 好吧,这种情况每秒发生 10 次。但是,我的问题是输出何时停止。那么,那里有什么。什么都没有改变。
  • 如果您只设置一次文本而不使用 NSTask,您会遇到同样的问题吗?

标签: objective-c cocoa scroll nstextview nsscrollview


【解决方案1】:

我观看了您的问题截屏视频,它看起来与我不久前遇到的问题非常相似。我有一个方法可以启动一个工作表,像这样(假设存在某些值):

- (IBAction)beginSheet:(id)sender
{
    [[NSApplication sharedApplication] beginSheet:sheet 
                                   modalForWindow:[self mainWindow] 
                                    modalDelegate:self 
                                   didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) 
                                      contextInfo:self];
}

工作表没有像您那样包含文本视图,而是包含表格视图。有时 table view 会完美地执行,但其他时候,它的封闭滚动视图会不完整地绘制它的滚动条,并且在尝试滚动时会有很大的空白区域。

我设法确定只有在辅助线程上调用 -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() 方法与主队列和块一起使用也非常有效。)

对于传闻证据,我深表歉意,因为我知道这仍然可能无法解决您的特定问题。但同样,看过你的截屏后,我发现症状很熟悉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2011-10-03
    • 2019-03-03
    • 2012-09-21
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多