問題タブ [nspanel]

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

objective-c - Cocoa: NSPanel が親を失い、その他の奇妙な動作が発生する

NSPanel奇妙な動作に問題があり、この動作を示すサンプル アプリを作成しました。

アプリは Xcode 4 のテンプレートから生成され、単純にパネルを作成し、ボタンの押下に基づいてパネルを開閉します。

ここに画像の説明を入力

私が観察した奇妙な動作:

  1. Lion では、パネルを初めて開いた後、パネルはメイン ウィンドウをたどります。これは正しい動作です。ただし、閉じてから再度開くと、メインウィンドウに追従しなくなります。
  2. Snow Leopard では、パネルを閉じるとメイン ウィンドウも閉じられます。

編集:明確にするために。私が期待する動作は、メイン ウィンドウが移動されたときにパネルがメイン ウィンドウに追従することです。パネルが閉じられ、その後再び開かれた後も、それは真実です。また、Snow Leopard と Lion でパネルとメイン ウィンドウが同じように動作することも期待していました。

コードの重要な部分は次のとおりです。

注: メソッドに不要なsetParentWindow呼び出しを追加しopenPanelて、パネルが開かれるたびに親ウィンドウがリセットされることをアサートしました。しかし、違いはありませんでした。

誰かが私が間違っていることを説明してもらえますか?

編集:実装ファイルに欠落があることについて混乱があり@synthesize window = _windowますが、メモリリークの動作をテストするために作成した別のプロジェクトサンプルを開いたところ、そこにもありません。私は Xcode 4.4 を使用しているため、バグである可能性がありますが、プロジェクト テンプレートは変更されていないと思います。

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

cocoa - about panel in menubar application is not frontmost when activated

I have an application that lives in the menubar, without a main menu or dock icon. I have a button that triggers [NSApp orderFrontStandardAboutPanel:sender];. When that button is clicked, sometimes, the About panel becomes frontmost. Other times, however, the About panel opens, but behind other running application windows (to be clear, behind windows of OTHER applications, not behind my popover from the menubar). I'm not even sure where to start with debugging this - any suggestions?

Thanks.

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

objective-c - あるクラスから NSPanel を取得して、別のクラスで表示しようとしていますか?

私が持っている:

MyWindowController.h には、次のものがあります。

そして後で:

プログラム全体でこのパネルを利用したいと思います。私の HistoryController.m には、次のものがあります。

これで、そのメソッドに正常にアクセスできます (一部の NSLog 呼び出しでこれが確認されます) が、実際に NSPanel を表示させることはまったくできません。そこからのコードの一部を次に示します。

履歴ビューのボタンを FirstResponder アクション「viewInvoice」にリンクすると、パネルをポップアップさせることができますが、パラメーター (つまり請求書番号) を介して送信することはできないようです。

0 投票する
0 に答える
79 参照

xcode - このパネルは正しく表示されていますか?

Snow Leopard で xcode 4.2 を実行しています。メイン ウィンドウの横に表示される Mac アプリケーションでパネルを表示しようとしています。そのためのコードは次のとおりです。

パネルは正常に表示され、そのコントロールは機能しているように見えます。しかし後で、カスタム オブジェクトを作成し、それを NSViewController のpresentedObject プロパティに割り当てようとすると、割り当てが行われません。次の行を実行すると、presentedObject の値が nil のままになります。

ViewController に FieldInfo オブジェクトを参照するためのプロパティを与え、それを、presentedObject を割り当てようとしたのと同じ場所に割り当てようとしました。効果は同じです。割り当て後、fieldInfo プロパティの値は nil のままです。これは、ViewController に問題があると思わせます。ペン先から間違って取り出したのでしょうか?

ありがとう

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

objective-c - アプリケーションの起動時に NSFontPanel を非表示にできません

NSFontPanel を使用するアプリケーションの機能を作成しています。アプリケーションに「フォント」メニューを入れたくありません。

メニュー項目がクリックされたときのフォントパネルの開閉はそのように行われます

それは正常に動作します。アプリケーションの起動時にフォントパネルが表示されている場合に閉じようとすると、問題が発生します。私は試してみました

また

私もif文なしで試してみましたが、まだうまくいきません。アプリを閉じたときにパネルが表示されている場合、アプリを開くと常に再びポップアップします。また、アプリ デリゲートの appWillTerminate メソッドでフォント パネルを閉じようとしました。同じ動作。

ヒントをいただければ幸いです。前もって感謝します、

フロー

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

objective-c - パレットを永続的にアクティブ/フォーカスしますか?

アプリケーションのフローティング ツール パレットを永続的にアクティブにする簡単な方法はありますか? これらはすべて開いているドキュメントに関連しているため、いつでも非アクティブにする必要はありません。

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

objective-c - 他のバックグラウンド ウィンドウのフォーカスを失うことなく、NSPanel にフォーカスすることは可能ですか?

カスタム NSPanel があります: http://cl.ly/K8SY

私はそれをNSPopUpMenuWindowLevelに設定しました.NSPopUpMenuWindowLevelはそのままにしておきたいレベルです。例としてスポットライト メニューがあります。これをクリックすると、バックグラウンドのウィンドウにある他のフォーカスはそのまま残りますが、検索フィールドに入力することはできます。

私はそれを開きます:

ただし、これはウィンドウだけでなく背景にも焦点を当てていません。

これを達成することは可能ですか?もしそうなら、どのように?

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

cocoa - クローズ ボックスで NSPanel を Escape キーで閉じないようにする

NSPanelキーウィンドウのときにエスケープキーが閉じないようにする最良の方法を知っている人はいますか? 私のパネルは子ウィンドウであり、ウィンドウの半永久的な部分のように、引き出しのように動作するようにしたいのですが、その中のテキスト コントロールについては、Escape キーで編集をキャンセルしたいと考えています。

最近、Cocoa のドキュメントで Windows と Escape キーに関する詳細を見つけました。NSResponder クラス リファレンスでcancelOperation:は、「ウィンドウがデフォルトのアクション メッセージをcancelOperation:最初のレスポンダーに送信し、そこからメッセージがレスポンダー チェーンを上っていく」と書かれています。の場合は異なるようで、最初の応答者が呼び出しを取得したり、NSTextView デリゲートが呼び出しを取得したりNSPanelすることなく、ウィンドウが閉じます。cancelOperation:doCommandBySelector:

レスポンダチェーンの出入りに関する私の知識は、私がこれまでずっと OS X の仕事をしてきたことを考えると恥ずべきことです。サブクラスで通常のウィンドウのように動作keyDown:させる必要があると考えていました。and can catchNSPanelをオーバーライドして、呼び出しを ではなく に転送しようとしましたが、変更はありませんでした。Escape は、最初の応答者へのメッセージなしでウィンドウを閉じました。それは試してみても合理的でしたか?NSPanelkeyDown:NSWindowkeyDown:super

次に、パネルのサブクラス ' を完全に再実装してkeyDown:、次のようにしました。

これにより、テキスト フィールドが通常どおりにエスケープを処理できるようになると思います。また、テキスト フィールドが最初のレスポンダーではない場合、呼び出しは行き止まりになる可能性があります。しかし、試してみると、パネルは以前と同じように閉じます。明らかに、私は適切なレベルで物事を傍受していません。

cancelOperation:低レベルのキー押下イベントとパネルのクローズの間に実行される一連のメソッド、またはそれをインターセプトしてファーストレスポンダーに確実に送信するためにオーバーライドする必要があるものを誰かが知っていますか?

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

objective-c - Cocoa のカスタム ウィンドウ スタイル

OK、これが私がやろうとしていることです:

  • カスタムNSPanelサブクラスがあります
  • NSPanelボーダーレス (タイトルなし - 自分でタイトルバーを描いている) でサイズ変更可能にしたい

問題は次のとおりです。

  • を に設定するstyleMaskNSResizableWindowMask、デフォルトのタイトル バーも表示されます。
  • を に設定するstyleMaskNSBorderlessWindowMask、デフォルトのタイトル バーが消えます (これは良いことです) が、ウィンドウのサイズ変更機能は失われます。

これは私のコードです:

コメントアウトされたコードからわかるように、ビット操作とマスクの可能な組み合わせを使用して、必要なものを組み合わせようとしました。

何か案は??

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

xcode - NSWindows の切り替え

が 2 つNSWindowsあり、どちらにも が含まNSPanelれています。ボタンが押されたときにウィンドウを切り替えたい。これはどのように行うことができますか?古いウィンドウはもう必要ないので、新しいウィンドウを表示したいだけです。