无法子类化 UILabel:发送到 UILabel 的无法识别的选择器

Unable to subclass UILabel: Unrecognized selector sent to UILabel

我正在使用 CocoaPods 导入一些东西。现在我正在尝试使用 TTTAttributedLabel,它是 UILabel 的丰富子 class,允许 URL-点击等

现在,我无法让我的应用程序识别我的标签实际上是 TTTAttributedLabel 的实例,而不是常规的 UILabel

在我的 .xib 中,我将一个常规 UILabel 拖到我的视图中,然后像这样编辑标签的 class:

它确实为我自动补全了名字,所以我知道它知道 class。然后,我从 xib 拖了一个连接到视图的 class,像这样:

它自动将自己指定为 TTTAttributedLabel,因为它识别出它就是它,否则它会说 UILabel.

因为我在我的 podfile 中指定了 use_frameworks!,所以我必须导入 class,所以在我的视图 class 的顶部,我有 import TTTAttributedLabel.

现在,当我尝试使用标签时,它自动完成如下: 用正确的class、TTTAttributedLabel。 但是当我这样做时:

print("labBody: ", labBody)

它打印出这个:

labBody:  <UILabel: 0x7fa754c86710; frame = (16 459; 42 21); text = 'Label'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60000029cf20>>

认为它是一个 UILabel。如果我尝试访问任何 TTTAttributedLabel 特定的变量或函数,它仍然会为我自动完成它们:

labBody.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue

但是在运行时使用这些时,整个应用程序崩溃,说:

 -[UILabel setEnabledTextCheckingTypes:]: unrecognized selector sent to instance 0x7fdfc7c59300

我瞎了吗?为什么这不起作用?这就是我一直在做的事情。我可能会度过一个艰难的星期二.. 我已经尝试了所有常规的东西,清理,删除派生数据,重新启动 Xcode,再次从 运行 之前的设备中删除应用程序..

我什至用过TTTAttributedLabel,我知道它有效。唯一的新鲜事是这是我第一次使用 use_frameworks!.. 这会影响 .xib 吗?让它无法知道 subclass 之类的..?

我完全不知道 为什么 这行得通,但我认为这与此 pod 在 Objective-C 中以及绑定和加载 Obj-有关C 东西..

无论如何,我所要做的就是将对象包装在一个新的本地 class 中。 然后将 .xib 文件中我的标签的 class 更改为此 class 而不是 TTTAttributedLabel (显然我视图中的出口 class)。

除了创建这个 class,不需要做任何其他事情,它不需要包含任何东西。

我确实读过一些关于设置标志的内容,比如 load ObjC-flag,但我没有尝试过。我认为该解决方案可能还会加载很多我没有 need/want 加载的其他 Object-C 内容..