gpt4 book ai didi

objective-c - Cocoa: NSButton 被点击后消失。然而仍然活跃

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:42 25 4
gpt4 key购买 nike

我正在使用 XCode 4.1 在 Objective-C 中编写一个简单的项目,目标是 MacOS(不是移动设备),并且遇到了以下问题:

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

我尝试了以下修复方法,但均无效:

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

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

编辑:仍然不太明白为什么会这样,但我确实找到了一个解决方法:在消失的按钮正下方创建一个重复按钮。即使未绘制,点击也会定向到顶部按钮。 Kludge 是肯定的,但有效。

最佳答案

最有可能的情况是按钮和它前面的 View 不在层次结构中但具有相同的父 View 。如果是这种情况,则绘图行为未定义。

您需要确保按钮是它前面的 View 的 subview 。在代码中,您将通过调用 [parentView addSubView:yourButton] 来执行此操作,而在界面构建器中,您需要确保将按钮拖到包含 View 内,而不是旁边。

关于objective-c - Cocoa: NSButton 被点击后消失。然而仍然活跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com