問題タブ [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.
objective-c - Cocoa: NSPanel が親を失い、その他の奇妙な動作が発生する
NSPanel
奇妙な動作に問題があり、この動作を示すサンプル アプリを作成しました。
アプリは Xcode 4 のテンプレートから生成され、単純にパネルを作成し、ボタンの押下に基づいてパネルを開閉します。
私が観察した奇妙な動作:
- Lion では、パネルを初めて開いた後、パネルはメイン ウィンドウをたどります。これは正しい動作です。ただし、閉じてから再度開くと、メインウィンドウに追従しなくなります。
- Snow Leopard では、パネルを閉じるとメイン ウィンドウも閉じられます。
編集:明確にするために。私が期待する動作は、メイン ウィンドウが移動されたときにパネルがメイン ウィンドウに追従することです。パネルが閉じられ、その後再び開かれた後も、それは真実です。また、Snow Leopard と Lion でパネルとメイン ウィンドウが同じように動作することも期待していました。
コードの重要な部分は次のとおりです。
注: メソッドに不要なsetParentWindow
呼び出しを追加しopenPanel
て、パネルが開かれるたびに親ウィンドウがリセットされることをアサートしました。しかし、違いはありませんでした。
誰かが私が間違っていることを説明してもらえますか?
編集:実装ファイルに欠落があることについて混乱があり@synthesize window = _window
ますが、メモリリークの動作をテストするために作成した別のプロジェクトサンプルを開いたところ、そこにもありません。私は Xcode 4.4 を使用しているため、バグである可能性がありますが、プロジェクト テンプレートは変更されていないと思います。
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.
objective-c - あるクラスから NSPanel を取得して、別のクラスで表示しようとしていますか?
私が持っている:
MyWindowController.h には、次のものがあります。
そして後で:
プログラム全体でこのパネルを利用したいと思います。私の HistoryController.m には、次のものがあります。
これで、そのメソッドに正常にアクセスできます (一部の NSLog 呼び出しでこれが確認されます) が、実際に NSPanel を表示させることはまったくできません。そこからのコードの一部を次に示します。
履歴ビューのボタンを FirstResponder アクション「viewInvoice」にリンクすると、パネルをポップアップさせることができますが、パラメーター (つまり請求書番号) を介して送信することはできないようです。
xcode - このパネルは正しく表示されていますか?
Snow Leopard で xcode 4.2 を実行しています。メイン ウィンドウの横に表示される Mac アプリケーションでパネルを表示しようとしています。そのためのコードは次のとおりです。
パネルは正常に表示され、そのコントロールは機能しているように見えます。しかし後で、カスタム オブジェクトを作成し、それを NSViewController のpresentedObject プロパティに割り当てようとすると、割り当てが行われません。次の行を実行すると、presentedObject の値が nil のままになります。
ViewController に FieldInfo オブジェクトを参照するためのプロパティを与え、それを、presentedObject を割り当てようとしたのと同じ場所に割り当てようとしました。効果は同じです。割り当て後、fieldInfo プロパティの値は nil のままです。これは、ViewController に問題があると思わせます。ペン先から間違って取り出したのでしょうか?
ありがとう
objective-c - アプリケーションの起動時に NSFontPanel を非表示にできません
NSFontPanel を使用するアプリケーションの機能を作成しています。アプリケーションに「フォント」メニューを入れたくありません。
メニュー項目がクリックされたときのフォントパネルの開閉はそのように行われます
それは正常に動作します。アプリケーションの起動時にフォントパネルが表示されている場合に閉じようとすると、問題が発生します。私は試してみました
また
私もif文なしで試してみましたが、まだうまくいきません。アプリを閉じたときにパネルが表示されている場合、アプリを開くと常に再びポップアップします。また、アプリ デリゲートの appWillTerminate メソッドでフォント パネルを閉じようとしました。同じ動作。
ヒントをいただければ幸いです。前もって感謝します、
フロー
objective-c - パレットを永続的にアクティブ/フォーカスしますか?
アプリケーションのフローティング ツール パレットを永続的にアクティブにする簡単な方法はありますか? これらはすべて開いているドキュメントに関連しているため、いつでも非アクティブにする必要はありません。
objective-c - 他のバックグラウンド ウィンドウのフォーカスを失うことなく、NSPanel にフォーカスすることは可能ですか?
カスタム NSPanel があります: http://cl.ly/K8SY
私はそれをNSPopUpMenuWindowLevelに設定しました.NSPopUpMenuWindowLevelはそのままにしておきたいレベルです。例としてスポットライト メニューがあります。これをクリックすると、バックグラウンドのウィンドウにある他のフォーカスはそのまま残りますが、検索フィールドに入力することはできます。
私はそれを開きます:
ただし、これはウィンドウだけでなく背景にも焦点を当てていません。
これを達成することは可能ですか?もしそうなら、どのように?
cocoa - クローズ ボックスで NSPanel を Escape キーで閉じないようにする
NSPanel
キーウィンドウのときにエスケープキーが閉じないようにする最良の方法を知っている人はいますか? 私のパネルは子ウィンドウであり、ウィンドウの半永久的な部分のように、引き出しのように動作するようにしたいのですが、その中のテキスト コントロールについては、Escape キーで編集をキャンセルしたいと考えています。
最近、Cocoa のドキュメントで Windows と Escape キーに関する詳細を見つけました。NSResponder クラス リファレンスでcancelOperation:
は、「ウィンドウがデフォルトのアクション メッセージをcancelOperation:
最初のレスポンダーに送信し、そこからメッセージがレスポンダー チェーンを上っていく」と書かれています。の場合は異なるようで、最初の応答者が呼び出しを取得したり、NSTextView デリゲートが呼び出しを取得したりNSPanel
することなく、ウィンドウが閉じます。cancelOperation:
doCommandBySelector:
レスポンダチェーンの出入りに関する私の知識は、私がこれまでずっと OS X の仕事をしてきたことを考えると恥ずべきことです。サブクラスで通常のウィンドウのように動作keyDown:
させる必要があると考えていました。and can catchNSPanel
をオーバーライドして、呼び出しを ではなく に転送しようとしましたが、変更はありませんでした。Escape は、最初の応答者へのメッセージなしでウィンドウを閉じました。それは試してみても合理的でしたか?NSPanel
keyDown:
NSWindow
keyDown:
super
次に、パネルのサブクラス ' を完全に再実装してkeyDown:
、次のようにしました。
これにより、テキスト フィールドが通常どおりにエスケープを処理できるようになると思います。また、テキスト フィールドが最初のレスポンダーではない場合、呼び出しは行き止まりになる可能性があります。しかし、試してみると、パネルは以前と同じように閉じます。明らかに、私は適切なレベルで物事を傍受していません。
cancelOperation:
低レベルのキー押下イベントとパネルのクローズの間に実行される一連のメソッド、またはそれをインターセプトしてファーストレスポンダーに確実に送信するためにオーバーライドする必要があるものを誰かが知っていますか?
objective-c - Cocoa のカスタム ウィンドウ スタイル
OK、これが私がやろうとしていることです:
- カスタム
NSPanel
サブクラスがあります NSPanel
ボーダーレス (タイトルなし - 自分でタイトルバーを描いている) でサイズ変更可能にしたい
問題は次のとおりです。
- を に設定する
styleMask
とNSResizableWindowMask
、デフォルトのタイトル バーも表示されます。 - を に設定する
styleMask
とNSBorderlessWindowMask
、デフォルトのタイトル バーが消えます (これは良いことです) が、ウィンドウのサイズ変更機能は失われます。
これは私のコードです:
コメントアウトされたコードからわかるように、ビット操作とマスクの可能な組み合わせを使用して、必要なものを組み合わせようとしました。
何か案は??
xcode - NSWindows の切り替え
が 2 つNSWindows
あり、どちらにも が含まNSPanel
れています。ボタンが押されたときにウィンドウを切り替えたい。これはどのように行うことができますか?古いウィンドウはもう必要ないので、新しいウィンドウを表示したいだけです。