在 Mac Catalyst 项目中未调用 IBAction

Posted

技术标签:

【中文标题】在 Mac Catalyst 项目中未调用 IBAction【英文标题】:IBAction not called in Mac Catalyst project 【发布时间】:2020-02-28 20:48:13 【问题描述】:

我在 Interface Builder .xib 文件中有一些工具栏按钮,但单击它们不会在我的视图控制器中调用它们对应的 IBAction 方法。

我知道视图控制器已连接到笔尖,因为在视图控制器中这样的测试代码具有预期的结果:

self.saveButton.title = @"foo";

当我单击按钮时,它显示选定状态,但当我释放它时没有任何反应。方法定义是这样的……

- (IBAction)save:(UIButton *)sender;

...我在 Interface Builder 的 Connections Inspector 中看到了连接。我还有其他可以正常工作的按钮,但我看不出这个有什么不同。

【问题讨论】:

【参考方案1】:

我在 IBAction 方法中的 sender 参数类型错误。我不知何故有这个:

- (IBAction)save:(UIButton *)sender;

但是由于一个条形按钮项正在调用它,它应该是:

- (IBAction)save:(UIBarButtonItem *)sender;

更新代码后,我不得不在 Interface Builder 中取消链接并重新链接按钮。然后就成功了!

多年来我一直在 ios 上使用此代码,没有出现任何问题,但显然 Mac Catalyst 平台对此类错误的容忍度较低。

我还没有看到很多 Mac Catalyst 问题发布,所以希望这会对处于相同情况的人有所帮助。

【讨论】:

以上是关于在 Mac Catalyst 项目中未调用 IBAction的主要内容,如果未能解决你的问题,请参考以下文章

Mac Catalyst 应用程序如何处理生命周期转换?

Mac-catalyst - Mac 催化剂应用程序的最小窗口大小

在 Mac Catalyst 中打开一个新窗口

如何在 Mac 上的 Mac Catalyst 应用程序中使用钥匙串?

Mac Catalyst 的问题 - 链接为 iOS 模拟器构建的目标文件

UIMarkupTextPrintFormatter 和 Mac Catalyst