2012-04-16 11 views
3

ファイルをダブルクリックすると、自分のアプリケーションでファイルを開きたいと思います。ファイルタイプをアプリケーションに登録していて、ファイルをアプリケーションアイコンにドロップすると、application: openFile:メソッドが正常に動作します。このメソッドは、ユーザーがファイルをダブルクリックしたときにも機能するはずです。objective-cでダブルクリックしてファイルを開く

私が見ているのは、ダブルクリックでファイルを開くとアプリが起動しますが、Safariはそのファイルを開く(.weblocファイルを開こうとしています)。しかし、呼び出されませんapplication: openFile:方法:(

ここでは、私はXcodeでそれを設定する方法である: file type reg

は編集:私は私のスタンダールとしてオープンする.weblocを設定している

。アプリケーションも右クリックすると、「開く」>「私のアプリは、」動作しない

編集2: 私は.MP3するファイルの拡張子や他の名前を変更すると、私のアプリをファイルをダブルクリックするとファイルが開きます。奇妙な...

答えて

0

Xcodeでは、「Mac OS X :: Cocoaアプリケーション」テンプレートを使用して新しいプロジェクトを作成します。次に実装する

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError 
{ static NSString *content = @"Empty File"; 
    return [NSData dataWithBytes: [content UTF8String] 
         length: 1 + strlen ([content UTF8String])]; } 

次に、あなたのプロジェクトと比較するための実例があります。

+0

私はあなたが私の質問が少し間違っていると思います。または、私はあなたの答えを理解していない:(リンゴのドキュメントでは、言う: "指定された型にフォーマットされたドキュメントの内容を含むデータオブジェクトを作成し、返す" 'dataOfType:error:'。 – Silicone

+0

申し訳ありません。Xcodeプロジェクトの例では、新しい文書を作成し、文書を保存してからダブルクリックして開くことができます。上記のコードは、次のとおりです。ファイルを保存するために変更する必要があるテンプレートコード(私の答えの中のメソッドもまた 'YES'を返すように変更する必要があります)をダブルクリックすると元の質問を解決するのに役立ちます。サンプルコードは新しいドキュメントタイプ 'mydoc'を作成し、既存のドキュメントタイプ 'webloc'を開いています - したがって、おそらくサンプルコードは役に立ちません。 – GoZoner

+0

私は "my"独自の.weblocファイルをプロパティリストエディタで作成しました。ちょうど開かれたクロム。私が "。 webloc "拡張Safariが開きます。拡張子を ".mp3"に変更するか、それ以外のものが期待どおりに動作すると、 'application:openFile:'と呼ばれる:S – Silicone

1

ファイルタイプを扱うことができるすべてのアプリケーションでファイルをダブルクリックしても開きません(JPEGをダブルクリックしたときに何が起こるか想像できますか?ファイルタイプのデフォルトアプリ。この場合、Safariはweblocファイルのデフォルトの読み込み機能です。あなたはそれをあなたのアプリケーションにする必要があります(あなたはGet Infoウィンドウからこれを行うことができます)。

+0

この記事に選ばれた回答は私の問題を解決するプロセスについて説明します。また、 "Open With"> "My Application"を選択した場合、それは動作しません。 – Silicone

0

同じ種類のファイルを開く方法をすべて知っているいくつかのアプリケーションがある可能性があります。 アプリケーションが.weblocファイルを処理するようにするには、そのタイプのファイルの情報を取得します。その後、情報ウィンドウの「開く」セクションのポップアップメニューでアプリケーションを選択します。そのようなファイルすべてに対してアプリケーションを使用する場合は、[すべてを変更...]ボタンをクリックします。

+0

私のアプリケーションは、この種のファイルを開くためのデフォルトのアプリケーションとして設定されています。 「開く」は機能しません。 – Silicone

+0

'-application:openFiles:'も実装していますか?そして、ドキュメントで説明されているように、実装で '-replyToOpenOrPrint:'を呼びますか? – Caleb

+0

はい、 'application:openFiles:'も私のコードにあります。また、アプリケーションのアイコンに複数のファイルをドロップするときにもうまくいきます。私は 'replyToOpenOrPrint:'を試みましたが、何の違いもありませんでした。'application:openFile(s):'のコードはちょうど呼び出されません – Silicone

1

私はちょうど同じような問題を自分で経験していたので、私のために働くものを追加します。私は.weblocファイルが-application:openFile:を決して呼び出さないことを発見しました。その代わりに、.weblocをダブルクリックしてアプリケーションが処理するようにするには、アプリケーションがURLのデフォルトのロールハンドラになるようにする必要があります。私はデフォルトとして私のアプリケーションで開くファイルを設定している How do you set your Cocoa application as the default web browser?

関連する問題