1

我有一个适用于 iOS 和 Mac OS 的控件库。它的实现如下:

#if TARGET_OS_IPHONE

#import <UIKit/UIKit.h>

@interface MyCustonControl : UIControl
...
@end

#else

#import <Cocoa/Cocoa.h>

@interface MyCustomControl : NSControl
...
@end

#endif

如果我在视图控制器中构建控件,这可以正常工作。如果我尝试使用 Interface Builder,我永远无法将 UIView 的自定义类设置为 MyCustomControl。它显示在列表中,我可以输入它,但如果我关注其他内容然后再次关注视图,自定义类已恢复为 UIView。

我在两个实现中都实现了 initFromCoder,只是为了确保不是这样。

有什么办法解决这个问题吗?是 IB 很奇怪还是我应该以不同的方式定义我的班级?

4

1 回答 1

1

您不能将自定义类设置为您的控件,因为自定义类需要是 UIView/NSView 的子类,而 UIControl/NSControl 是 UIView/NSView 的父类。您应该将定义更改为

@interface MyCustomControl : UIView
...
@interface MyCustomControl : NSView
于 2013-03-07T16:51:59.053 回答