2009-05-11 8 views
0

私が実際にやっていることは、WebKitViewをスクリーンセーバー(これはNSViewを継承しています)に置くことです。私はMacOS XとCocoaを全く新しくしています(しかし、私はObjective-Cに精通していて、GNUStepの一部を使いました)。レイティングが必要なのですか? NSView全体で1つのコントロールしか表示しません。あなただけのUIWebViewが独自にフルスクリーンを取ることができますとき通常のコントロールをNSViewにどのように入れますか?

答えて

4

the usual wayでのWebViewを作成し、自分自身にaddSubview:メッセージを送信し、ウェブビューを渡す:

webView = [[WebView alloc] initWithFrame:frame]; 
[self addSubview:webView]; 

あなたはWebViewののフレームとして渡すべき長方形迷っている場合は、 View Programming Guideを読んでください。また、webViewdealloc(またはinitWithFrame:isPreview:で自動リリース)にリリースすることを忘れないでください。

ウェブビューを取得したら、そのページにページを読み込む必要があります。適当に長いアニメーション間隔(秒の少なくともカップル)を設定し、animateOneFrameでページを読み込む:

- (void) animateOneFrame { 
    [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]]; 
} 

あなたはまた、(WebViewProgressFinishedNotificationを扱いたい、そしてそれが起こるまで、再ロードするWeb表示をオフに置いてもよいです遅いまたは浸漬された接続を補うため)。あなたはinitWithFrame:isPreview:とあなたの通知ハンドラメソッド、およびテストの両方にYESに設定し、animateOneFrameNOに設定したインスタンス変数、でこれをやる:

- (void) animateOneFrame { 
    if (hasFinished) { 
     [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]]; 
     hasFinished = NO; 
    } 
} 
+0

私はスクリーンセーバーが何でもできるので私はちょうど始まっています。 XcodeとScreen Saver Standard Appleプラグインで作成しましたが、プロジェクトにはnibまたはnixファイルはなく、View.hとView.mだけが付属しています。 nibファイルを使って作業することができれば幸いですが、どうすればいいですか? ありがとうございました。 – Pablo

+0

申し訳ありませんが、私はScreenSaverフレームワークで作業して以来、長い時間が経ちました。私は私の答えを編集しました。 –

+0

答えをありがとう、有望に見えます。 – Pablo

0
[aScreenSaverView addSubview:aWebKitView]; 

しかし、なぜ、スクリーンセーバービューへのUIWebViewを追加しますか?ビュー階層を必要としない場所に導入することは、インターフェースを表示するのに必要な処理を増やすため、良い考えではありません。その後、あなたのinitWithFrame:isPreview:方法で

+0

私は[aScreenSaverView addSubview:aButton]を試しましたが、動作しませんでした。私が何かを見逃しているのか、Webkitのビューはちょっとクールなボタンなのでしょうか? UIWebViewを全画面表示にすることについて、あなたが言うことを理解していません。スクリーンセーバーはスクリーンセーバーを継承しなければなりませんか? – Pablo

+0

彼はiphoneアプリケーションではなく、スクリーンセーバーフレームワークからスクリーンセーバーを書いています。 –

+1

ああ、私の悪いです。あなたの質問を誤解しているはずです。謝罪。 –

0

あなたはまた、あなたについてはあまり心配することはできませんあなたのanimateOneFrameメソッドの終了時に

[self stopAnimation]; 

を呼び出してアニメーション間隔を設定します。