Mac Catalyst 项目中未调用 IBAction

IBAction not called in Mac Catalyst project

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

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

self.saveButton.title = @"foo";

当我点击按钮时,它显示选中状态,但是当我释放它时没有任何反应。方法定义如下所示...

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

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

我在 IBAction 方法中的 sender 参数类型错误。我以某种方式得到了这个:

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

但是由于栏按钮项正在调用它,所以它应该是:

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

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

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

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