7

OSX (Mountain Lion) のスクリーン セーバーに取り組んでいますが、構成シートの設定に問題があります (そのため、ユーザーがシステム環境設定で [スクリーン セーバー オプション...] をクリックすると、私のオプションが表示されます)。OSX スクリーン セーバーの作成に関するチュートリアルは、インターネット上のどこにも 2 つまたは 3 つしかないようです。それらはすべて数年前のものなので、OSX 10.8 および Xcode 4 に完全には変換されません。

まず、私のScreenSaverView.mファイルには次のものがあります。

- (BOOL)hasConfigureSheet
{
    return NO;
}

- (NSWindow*)configureSheet
{
    return nil;
}

...そして、システム環境設定では、「スクリーンセーバーオプション...」ボタンは、「アラベスク」スクリーンセーバーのように無効にされるのではなく、クリック可能です (クリックしても何も起こりません)。

ボタンがクリックされたときに構成シートが表示されるようにするための手順は何ですか? また、ボタンが現在無効になっていないのはなぜですか?


編集:

「スクリーン セーバー オプション...」ボタンが無効になっていない理由がわかりました。ファイルに含める-(BOOL)hasConfigureSheet;のを忘れていました。ScreenSaverView.hただし、構成シートを表示する方法についての私の質問は残っています。

4

1 に答える 1

7

まず最初に: 必ずScreenSaver.frameworkプロジェクトに含めてください。必要なクラスScreenSaverViewと を提供しますScreenSaverDefaults

というファイルが既にあると言いますScreenSaverView.m-hasConfigureSheet「スクリーンセーバーオプション...」ボタンを無効にするには、メソッドをエクスポートする必要があるとも言っています。これは、あなたがすべきだったようにサブクラス化したかどうか疑問に思いますScreenSaverViewNSObject(代わりにサブクラス化しましたか?)ScreenSaverViewなどのメソッドをエクスポート-hasConfigureSheetします。それをサブクラス化し、その中の適切なメソッドをオーバーライドする必要があります。

さらにいくつかのこと:

構成シートの UI を含むプロジェクトに xib ファイルを含める必要があります。またIBOutlet、サブクラスのインターフェイスに を提供して、パネルとそこに含まれる UI 要素 (実際にアウトレットが必要なもの) を参照する必要があります。あれは)。

最後に、-configureSheet メソッドは、次のような方法で構成シートをフェッチする必要があります (この例でconfigSheetは、あなたの の 1 つになりますIBOutlet)。

if (configSheet == nil)
{
    if ([NSBundle loadNibNamed:@"myConfigSheet" owner:self] == NO)
    {
        NSLog(@"load config sheet failed");
    }
}

// then retrieve your defaults and set up your sheet; you should
//  be working with ScreenSaverDefaults, a subclass of NSUserDefaults.

// then return 'configSheet'

編集:

すでに知っていることをお話ししようとしている場合は、あらかじめお詫び申し上げますconfigSheet

My_ScreensaverView.h、パネルのアウトレットを宣言します。

IBOutlet id configSheet;

oridの代わりに使用したことに注意してください。単にシートに実際に使用しているクラスがわからないためです。(理想的には、NSPanel をシートに使用する必要があります。)NSWindow *NSPanel *

File's Ownernib ファイルで、が のインスタンスであることを確認してくださいMy_ScreensaverView。これを決定するには、このオブジェクトのアイコンを選択し、アイデンティティ インスペクタを使用してクラスを指定します。

configSheetコンセントとパネルを接続します。これを行う 1 つの方法は、Ctrl キーを押しながらFile's Ownerオブジェクトからウィンドウまたはパネル アイコンにドラッグし、表示configSheetされるポップアップから選択することです。

いつものように、あなたの努力に幸運を。

于 2012-12-05T01:01:18.310 に答える