0

我是 Objective-C 的初学者。所以我使用 C# + Monotouch 编写我的应用程序。现在我需要使用ObjC编写的第三方库TTTAttributedLabel。必须将其代码绑定到 C#。有一些有趣的结构:

@protocol TTTAttributedLabel <NSObject>
@property (nonatomic, copy) id text;
@end

@interface TTTAttributedLabel : UILabel <TTTAttributedLabel, UIGestureRecognizerDelegate>
/* some code here */
@end

我很清楚 TTTAttributedLabel 和 UILabel 继承。我是这样做的:

[BaseType (typeof (NSObject))]
interface TTTAttributedLabel{
     // code here
}

[BaseType (typeof (UILabel))]
interface UITextField : TTTAttributedLabel{
}

但我不知道如何继承UIGestureRecognizerDelegate,因为在 Objective-C 中它是一个协议,但在 Monotouch 中它是一个类。所以我不能从类继承接口。

这样做的正确方法是什么?

4

1 回答 1

1

在这种情况下,UIGestureRecognizerDelegate 的意思是对象将符合协议,正如您所注意到的,我们将协议映射到阻止它工作的类。

但其核心作用是允许将 TTTAttributedLabel 的实例传递给 UIGestureRecognizer 的 Delegate 属性。

对于这些情况,您可以改用 Wea​​kDelegate,它不会执行 C# 级别的类型检查,并允许您将 TTTAttributedLabel 的实例分配给 UIGestureRecognizer.WeakDelegate 属性。

于 2012-12-12T06:39:45.077 回答