問題タブ [nsapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1985 参照

cocoa - 実行中のアプリケーション全体でNSApplicationIconを変更しますか?

すべてのアラートに自動的に表示されるNSApplicationIconイメージを、アプリバンドルにあるものとは異なるものに調整したいと思います。

[NSApplication setApplicationIconImage:]を使用してドックアイコンを設定できることは知っていますが、これはドックにのみ影響し、他には何も影響しません。

この問題を回避できる場合があります。NSAlert*があり、setIcon:を呼び出して代替画像を表示できます。

残念ながら、NSApplicationIconを備えたNSImageViewを備えたペン先がたくさんあり、影響を与えたいので、アウトレットを作成し、アイコンを変更するためのコードを入力するのは面倒です。そして、BeginAlert ...タイプの呼び出し(NSAlertオブジェクトをいじくりまわすことはできません)で発生するアラートについては、完全に運が悪いです。

AppKitで使用されるNSApplicationIconをグローバルに(実行中のアプリケーションの存続期間中)オーバーライドして、アラートを100%置き換える(そしてコードを単純化する)ための合理的な方法を誰かが考えることができますか? ?

0 投票する
4 に答える
2225 参照

objective-c - クリックスルー ボタンとウィンドウを上げない

iTunes ミニプレーヤー (一例を挙げると) は、再生/一時停止および音量コントロールが使用されているときにアプリケーションが前面に表示されないクリックスルーをサポートしています。

これはどのように行われますか?

私はAppleのドキュメントを調べてきましたが、Cocoa Event-Handling GuideのEvent Dispatchに次のように記載されています。

一部のイベントは、その多くがアプリケーション キット (タイプ NSAppKitDefined) によって定義されており、ウィンドウまたはアプリケーション オブジェクト自体によって制御されるアクションと関係があります。これらのイベントの例としては、アプリケーションのアクティブ化、非アクティブ化、非表示、および表示に関連するイベントがあります。NSApp は、ディスパッチ ルーチンの早い段階でこれらのイベントを除外し、それ自体を処理します。

したがって、私の限られた理解 ( How an Event Enters a Cocoa, Application ) から、NSApplication をサブクラス化し、オーバーライド - (void)sendEvent:(NSEvent *)theEventすると、すべてのマウスとキーボードのイベントをトラップする必要がありますが、それでもクリックするとウィンドウが表示されます。したがって、イベントが NSApplication によって表示される前にウィンドウが発生するか、何か他のものが不足しています。

Matt Gallagher のDemystifying NSApplication を再作成して調べましたが、残念ながら Matt はイベント キューをカバーしていませんでした。

どんな助けでも感謝します、ありがとう。

編集して追加: Loyd's Loungeで同じ問題について話している投稿を見つけ、CocoaBuilder の投稿にリンクし、最初の右マウス ダウンをキャプチャします。[theEvent type] の NSLog をいじって再アクティブ化した後、マウスの左ボタンのアクティビティがキャッチされています。

ここで、ウィンドウを左クリックして前面に出すと、一連のイベント タイプが生成13, 1, 13されます。これらは、NSAppKitDefined、NSLeftMouseDown、および NSAppKitDefined です。これらを除外したり、どこに行くのかを見つけたりすることはできますか?

0 投票する
1 に答える
3468 参照

cocoa - applicationShouldTerminateAfterLastWindowClosed:赤いxを使用してCocoaアプリを閉じると機能しないようです

IKPicutreTakerを起動し、設定されている場合は画像をファイルに保存する小さなOSXCocoaアプリがあります。applicationShouldTerminateAfterLastWindowClosed:を使用して、pictureTakerが閉じられたときにアプリケーションを閉じます。これは、設定(目的の画像を選択したときに実行されます)またはキャンセルを押したときにすべて正常に機能しますが、ウィンドウの左上にある赤い矢印をクリックすると、アプリケーションが終了しません。この方法でウィンドウが閉じます。これは意図された機能ですか、それとも私は何か間違ったことをしていますか(フラグを設定していませんか?)。また、このボタンを無効にする方法はありますか?

0 投票する
3 に答える
10721 参照

objective-c - プログラムでココア アプリケーションをアクティブにする方法

ホットキーが押されたときに透明なウィンドウを表示するバックグラウンド プロセスがあります。

...ウィンドウは正常に表示され、他のウィンドウの前に(私が望むように)表示されますが、手動でウィンドウをクリックするまで、ウィンドウが表示されたときにアクティブだったアプリケーションはアクティブのままです。「makeKeyAndOrderFront」がアプリケーションをアクティブにすることも期待していましたが、NSLog 行を -applicationWillBecomeActive に追加すると、マウス クリックが実行されるまでアクティブな通知が得られないことがわかります。

-makeKeyAndOrderFront を発行すると同時に、アプリケーションをアクティブに設定する方法を知っている人はいますか? キーボード入力の受け入れを開始できるように、アクティブにする必要があります-必要な支援:-)

0 投票する
1 に答える
315 参照

iphone - iPhone アプリケーションのDidFinishLaunching がシミュレーターで 1 回呼び出される

applicationDidFinishLaunching メソッド内に NSLog ステートメントを配置しました。ビルドして実行し、ログ出力を確認します。次に、(シミュレーターで) ホーム ボタンを押してアプリを再起動すると、ログ出力が表示されません。

なんで?

0 投票する
1 に答える
5366 参照

cocoa - アプリケーションメニュー項目の無効化/有効化

メニュー処理の非常に基本的なことを学ぼうとしています。私のテストアプリのメニューバーには、「TestApp」、「File」、「Help」の3つのメニューがあります。次のように呼び出すだけで、これらのメニューを完全に削除できることがわかりました。

ただし、一時的に無効にしたい(グレー表示にしたい)だけです。これを行うための同様に簡単な方法はありますか?

0 投票する
5 に答える
7825 参照

objective-c - ココア: int main 関数

Cocoa プログラムで int main 関数が果たす役割は何ですか? 私が見てきたほとんどすべてのサンプル コードは、main.m に次のコードしかありません。

これは正確には何をしていて、プログラムは実際にコマンドのステップ実行をどこから開始するのでしょうか? 私の概念は再調整が必要なようです。

0 投票する
1 に答える
271 参照

objective-c - Deskshade から DeskLock のようなものを開発するにはどうすればよいですか?

ご迷惑をおかけして申し訳ありませんが、まだ別の質問があります。macrabbit の Deskshade アプリから DeskLock のようなことをするにはどうすればよいですか? 私は小さな窓を作りました。10.6でPresentationOptionsを使用して画面を「ロック」する方法は知っていますが、前回は元に戻すことができなかったので、リスクを冒したくありません;]

編集: DeskShade アプリは、実際にはデスクトップを覆い、すべてのアイコンを隠すことを目的としています。また、複数のフェード/スワイプで壁紙パターンをランダム化することもできます。DeskLock と呼ばれる追加機能が 1 つあり、実際には半透明の黒いベベル (Mac に組み込まれている AppSwitcher に似ています) にロック アイコンが表示され、個人的なテキストを配置できます。ロック アイコンをクリックすると、設定可能なパスワードを要求するモーダルが表示されます。何も押さずにこのパスワードを入力してから Enter キーを押すと、画面のロックが解除されます。これは、デスクトップを非表示にする DeskShade 機能も使用します。

ありがとう!

0 投票する
1 に答える
2467 参照

cocoa - Cocoa:NSApp beginSheetはアプリケーションデリゲートを設定しますか?

アプリケーションでカスタムシートを表示しようとしていますが、何か問題があると思います。すべてがうまく機能しているように見えますが、私にはかなり奇妙な副作用があります。(理解するのに何時間もかかりました)。アプリケーションでシートを表示するたびに、アプリケーションデリゲートがシートのインスタンスに設定されるため、コントローラーがデリゲートとして設定解除され、あらゆる種類の問題が発生することがわかりました。

FailureSheet.xibというNIBファイルを作成しました。インターフェイスをIBにレイアウトし、ファイルの所有者に設定した「FailureSheet.m」という「NSWindowController」のサブクラスを作成しました。これが私のFailureSheetクラスです。

ここでは複雑なことは何も起こっていません。これが、「Controller」クラスにFailureSheetを表示する方法です。

シートを表示する前に[NSAppデリゲート]をログに記録すると、正しいのは<Controller-0x012345>です。次に、このコードを実行してシートがアップした後、再度ログに記録すると、<FailureSheet-0xABCDEF>になります。

私がここで何を間違っているのかわからない-何かアイデアはありますか?