2012-03-11 91 views
3

我正在写一个简单的项目在客观的C使用XCode 4.1,针对MacOS(不移动),并遇到以下问题:可可:NSButton被点击后消失。但仍然活跃

我的一个按钮(NSButton,坐在股票之上NSView)会在点击后间歇性消失。它不再被绘制,并且背景被显示在它的位置上。这不是预期的行为,只会偶尔发生一次(可能是20次点击中的一次)。特别奇怪的是,该按钮仍然处于活动状态 - 用户可以点击应该显示该按钮的空间,并且将采取正确的操作并再次绘制该按钮。调整窗口大小也会导致按钮再次被绘制。

我已经尝试以下修正,其中没有工作:

  1. 添加SetNeedsDisplay调用点击处理结束。
  2. 将SetNeedsDisplay调用添加到不相关的动画循环中。这是一个糟糕的选择,并导致按钮闪烁,并最终导致使用按钮时崩溃。通过一些同步,这可能会变成一种解决方法,但不能解决根本问题。

关于正在发生的事情以及我如何解决它的任何想法?谢谢!

编辑:仍然不明白为什么会发生这种情况,但我确实找到了解决方法:在正在消失的那个正下方创建一个重复按钮。即使没有绘制,点击也会直接进入顶部按钮。 Kludge肯定,但有效。

+2

它是一个图像按钮?你有替代图像吗?它是什么类型的按钮? – 2012-03-11 12:33:44

+0

只是一个标准的NSButton - 不记得我是否使用了圆形矩形或推。没有与之相关的图像。 – tsellon 2012-03-11 12:52:47

+0

你说你没有以任何方式定制它 - 只是带标题的纯粹标准按钮?你可以发布你的点击处理功能吗? – 2012-03-11 13:08:34

回答

3

最可能的情况是,按钮和它前面的视图不在层次结构中,但具有相同的超级视图。如果是这种情况,那么绘图行为是不确定的。

您需要确保该按钮是它所在视图的子视图。在代码中,您可以通过调用[parentView addSubView:yourButton]来完成此操作,并且在界面构建器中,您需要确保在包含视图中拖动按钮,而不是在旁边。

+0

感谢您的信息!不知道。它似乎并没有在这种情况下发生。我没有重叠的同级视图 - 该按钮位于层次结构的底部。 – tsellon 2012-03-12 01:56:57

+0

你可以在网上发布nib文件吗? – 2012-03-12 02:00:08

相关问题