小编Wes*_*loy的帖子

在objective-C++(.mm文件)中调用swift

可以在Objective-C++(.mm)文件中调用Swift代码吗?有没有简单的解决方法,如果没有?

我有一个Xcode项目,它是Swift,Objective-C和C++的混合体.我没有问题从Objective-C到Swift用-Bridging-Header.h或从Swift到Objective-C用-Swift.h.

但我有一个.mm文件,它是Objective-C++.当我尝试#import "[ProductName]-Swift.h"它时会在-Swift.h文件中抛出许多编译错误,例如:

找不到'NSApplicationDelegate'的协议声明,你的意思是'NSConnectionDelegate'吗?

没有名为'NSTableViewDataSource'的类型协议

等等...

我已经研究了其他几个类似的问题,例如我可以将Swift与C++混合使用吗?就像Objective - C .mm文件一样,它似乎没有给我一个明确的答案或解决方案.

在我看来,我目前的解决方法是在Objective-C中创建一个使用Swift代码然后将其导入Objective-C++代码的包装器对象.

objective-c objective-c++ swift

3
推荐指数
1
解决办法
1035
查看次数

选定时重置NSTextField字体样式

内容:

在Interface Builder中,我有一个不可编辑的标签(NSTextField)。标签的内容是使用Cocoa绑定创建的。绑定的值是NSAttributedString(使用talue转换器创建的)。见图片:

捆绑

值转换器实质上按照Markdown格式(即,斜体和粗体)为特定字符指定字体。这样String-> NSAttributedString。标签的attributedStringValue已适当更改

问题:

在UI中选择标签时。字体重置为IB中指定的字体,而不是设置为的字体NSAttributedString。如果您不选择文本,那么一切看起来都会很好。

在点击标签之前:

在此处输入图片说明

单击/选择标签后:

在此处输入图片说明

尝试的解决方案:

  • 我已经尝试了子类化,NSTextField但是没有真正要覆盖的东西,它使我可以在选择文本时禁用任何字体更改。
  • 我尝试禁用富文本。通过不更改普通文本,这实际上有很大帮助,但是仍然从粗体和斜体文本中去除了格式
  • NSTextViews not NSTextFields 存在的大多数类似问题

macos cocoa interface-builder

1
推荐指数
1
解决办法
630
查看次数