gpt4 book ai didi

xcode - 为什么@IBAction 在启动时自动调用?

转载 作者:行者123 更新时间:2023-12-03 17:01:51 25 4
gpt4 key购买 nike

如果您创建一个新的 Cocoa 项目,并将 NSTextField对象库拖放到您的 View Controller (启动时的初始 Controller ),并创建两个 @IBAction (在其中添加 print(called))和 @IBOutlet,然后运行应用程序,然后您就看不到 @IBAction 启动时调用的方法。

然后,如果您在文本字段上按回车,则会调用该操作。然而,这一点很重要,在您退出应用程序然后再次启动应用程序后,您现在会看到 @IBAction 由于某些原因在启动时被调用(如果您不这样做,尝试几次)。

实际上,我想知道为什么在我的开发应用程序中启动时总是调用 @IBAction ,并搜索了在我的所有类中调用它的任何方法,但后来发现这个奇怪的问题即使在我启动一个新项目并创建一个连接,然后尝试启动和发送该操作几次试验和错误。

我还注意到我创建了五个新项目,并确认这在所有五个项目中都发生了。

为什么会出现这种情况?另外,如果这是Apple方面的错误,有什么办法可以禁用我的项目中@IBAction的自动执行吗?

我一开始设置了textField.editable = false,并在viewDidAppear:中将其设置为textField.editable = true,但仍然触发了启动后的行动。有什么办法可以解决这个问题吗?

<小时/>

看来,如果我通过点击红色图标并退出应用程序来关闭窗口,然后从 Xcode 中再次启动它,则不会调用 @IBAction 。这太奇怪了...

最佳答案

这似乎与 OS X 上的窗口恢复有关。

加载 View 时,您的文本字段将设置为第一响应者。然后,在恢复过程中,窗口成为第一响应者。这会导致文本字段放弃第一响应者,从而触发一个操作。

在 IB 中,您可以将文本字段的操作设置为“仅在输入时发送”。 (默认情况下是“结束编辑”。)

或者,如果您愿意,也可以将窗口设置为不可恢复。

关于xcode - 为什么@IBAction 在启动时自动调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062977/

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