在Cocoa中将视图标记为“忙碌”

时间:2012-02-07 16:26:35

标签: cocoa nsview

我正在编写Cocoa应用程序,我需要向用户表明视图无效,并且在后台作业完成之前无法响应。

更长的版本:

我的应用中的视图包含从服务器获取的一些数据。当应用确定数据无效时,它会获取新信息并显示它。通常更新发生得太快,但如果服务器或网络问题导致后台作业需要一两秒钟,我需要确保用户

  1. 在作业完成之前无法与视图交互;
  2. 可以判断视图正在等待更新;和
  3. 可以继续与应用程序的其他部分进行交互,直到作业完成。
  4. 1)很重要,因为任何以陈旧数据启动的操作都会失败,如果网络或服务器运行缓慢,我不希望用户浪费时间与徒劳的尝试进行交互。应用程序。 (如果用户仍然可以看到数据,这很好。实际上,这可能是有用的,但这并不重要。)

    在Cocoa中执行此操作的标准方法是什么?对于它的价值,在Eclipse框架中我认为我在showBusy上使用了ViewPart方法。

    如果没有标准方式,有没有人有任何解决方法的建议?我已经很长时间没有使用OS X了,所以我甚至不确定应用程序应该如何看待和表现这种情况。 (此页面上的屏幕截图看起来很有前景,但它是iOS,而不是OS X:http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html

    现在我正在使用NSProgressIndicator替换整个视图并在任务完成后恢复视图,但删除视图意味着如果出现问题,我的应用可能会处于时髦状态。此外,我希望能够将此功能纳入其自己的类或类别(?),因为我将在我的应用程序中遇到几个不同视图类的问题。理想情况下,我希望得到像Eclipse的一样简单的东西.showBusy(true)/view.showBusy(false)。

    任何和所有帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不在繁忙的视图之上绘制另一个视图?您可以让它显示一个意味着忙碌的图像,或者将其绘制为半透明,因此它会使繁忙视图的更新前版本变暗。