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 に答える