問題タブ [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 投票する
0 に答える
82 参照

objective-c - メニュー項目のポップアップ パネル内にテキストを貼り付けられません

メニュー アプリケーションがあり、メニュー項目から NSPanel を起動しています。ユーザーがメニュー項目をクリックすると、カスタム NSWindowController を (初めて) 遅延してインスタンス化し、showWindow を呼び出して表示します。

カスタム NSViewController は xib ファイルにリンクされています。

ここに画像の説明を入力

これは私がそれを作成する方法です:

問題は、これら 2 つのテキスト フィールドのいずれかにテキストを貼り付けようとすると、何も貼り付けられず、ビープ音が鳴ることです。

編集

元のメニューを復元することに成功し (元のメニューしか認識されないため、別のプロジェクトの xib からコピーする必要がありました)、addFeedControllerアクセサーを次のように変更しました。

ウィンドウを表示するメソッドも変更しました。

初めてパネルがすぐに表示されますが、問題はありません。しかし、パネルを閉じてもう一度起動しようとすると、表示されません。

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

cocoa - windowNumbersWithOptions: Yosemite でアプリケーションの NSPanel ウィンドウを返すことができない

メインのドキュメント ウィンドウと、関連情報を表示するいくつかの「サテライト」NSPanel ウィンドウを備えた、ドキュメント ベースのアプリケーションがあります。それらはフローティングではなく、キーになる可能性があり (実際にキーになる)、メイン ウィンドウと同じレイヤーにあるように見えます。

次のように表示/非表示アクションを実装しようとしました: パネルが表示されていない場合は表示します。見えているが正面にない場合は、正面にします。前面に表示されている場合は非表示にします。

そのためには、NSPanel が「最前面」にあるかどうかを知る必要があります。残念ながら、そのための NSWindow API は存在しません。windowNumbersWithOptionsそのために、パネルの z オーダーを比較するために使用しようとしました。

残念ながら、私が受け取った配列には、メイン ドキュメント ウィンドウ用の 1 つの数字しか含まれていません。「ウィンドウ」メニューにパネルが表示され、クリックして前面に表示したり、閉じて使用したりできますが、windowNumbersWithOptions で番号を取得できません。

アイデアはありますか?

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

macos - NSWindow (NSPanel) がフルスクリーン アプリの上に浮かぶことを許可する

システムのどこからでも「クイック入力」を提供する小さなウィンドウをメインアプリに追加しようとしています。

ユーザーがホットキーを押すと、ウィンドウがポップアップし、他のすべてのウィンドウの上に浮かびます。

ほとんどの場合、これは大きな問題ではありません。NSWindow を次のように構成できます。

NSNonactivatingPanelMaskオプションセットでNSPanelにすることもできます。

唯一の問題は、ユーザーが全画面アプリを含むスペースにいる場合でも、ウィンドウが画面にポップアップできるようにするにはどうすればよいですか?

LSUIElement=trueアプリが(Dockに位置のないアプリ)の場合、これが可能であることは知っていますが、私の場合はそうではありません。

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

swift - ユーザー入力には NSPanel を使用します。二度と開かない

ユーザーが新しいフォルダーの名前を入力できるように「NSPanel」を表示したいと思います。なぜ NSPanel なのか? 見た目がかっこよくなるから!名前を確認するために、1 つの TextField と 1 つの PushButton をホストします。また、クリックするとウィンドウを閉じます。

ここに画像の説明を入力

メニューで「追加」ボタンをクリックすると表示されます。で「完了」ボタンがクリックされたときにも閉じますNSPanel。しかし、もう一度「追加」をクリックすると、もう表示されません。これは、タイトル バーの通常の「閉じるボタン」で閉じるときにも発生します。したがって、「完了」プッシュボタンとは明示的に関連していません。func windowWillClose(notification: NSNotification)どちらの場合もトリガーされない実装もテストしました。何が問題なのですか?また、毎回「新しい」ウィンドウにする必要がありますか?または、ユーザー入力にこれを正しく使用していますか? 一度インスタンス化されてから「表示」および「非表示」されるだけですか、それとも間違っていますか?

そこで、新しい Cocoa-Class - Subclass of NSWindowController- を作成し、xCode にそのための .xib も作成させました。その .xib で、NSPanel. visible at launchメニューボタンがクリックされたときにウィンドウが表示されないことにチェックを入れました。私はまた、ココア クラスでIBOutletfor を接続しました。NSPanel現時点での私のクラスは次のようになります。

メイン クラスでは、次のように変数として宣言しました。

そして、次のoverride func awakeFromNib()ように:

同様に、次のようなクリック ハンドラーで:

今。クリックしaddClicked()て呼び出されると、ウィンドウが期待どおりに表示されます。罰金!名前を入力して「完了」ボタンを押すと、ウィンドウが適切に閉じます。こちらもファイン!しかし、もう一度クリックすると、たとえば別のフォルダーを追加すると、ウィンドウが表示されなくなります。また、まったく同じ方法で設定ウィンドウを作成しました。ただし、NSPanel の代わりに Window が内部にあります。それは完全に正常に機能します。

だから私は明らかに何かを混乱させたり、何かを忘れたりしました。どうなり得るか?チュートリアルに従う以外に、あらゆる種類のウィンドウで作業するのは初めてであることを公然と認めます。だから私は明らかにそれの全体的な概念を理解していませんでした. Apples Developer Guide でウィンドウについて読んだところ、ちょっと理にかなっています。しかし...まあ、現時点では機能しません。私は「誤用」していNSPanelますか?またはから継承しているため、そうすべきではありませんNSWindowか?

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

operating-system - NSURL を CFURLRef に変換する方法

Apple は、PDF ドキュメントを作成するためのサンプル コードを提供しています。しかし、それは CFURLRef を使用します

NSPanel savepanel は NSURL を提供します。

NSURL を CFURLRef に変換できません

出力は

2016-04-22 00:34:26.648 XXX 分析 [12242:813106] CFURLRef AnalysisReport.pdf -- file:///Users/xxxxxx/Library/Containers/com.xxxxxx.xxxnalysis/Data/

私が見つけたコードを変換する

出力は

2016-04-22 00:37:20.494 XXX 分析[12325:816505] NSURL ファイル:///Users/xxxxxx/Documents/xxxnalysis.pdf

最後に PDF ファイルは保存されますが、NSPanel を閉じたときにプログラムがクラッシュします。

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

objective-c - NSSavePanel は、同じコードであっても、アプリケーション間で異なって表示されます

プロジェクトで NSSavePanel に問題があったため、問題を特定するために、デフォルト ウィンドウの viewDidLoad に NSSavePanel コードのみを含むテスト プロジェクトを作成しました。

テスト プロジェクト

NSSavePanel を表示するために使用したコード:

表示される保存パネルは次のようになります。

ここに画像の説明を入力

本当のプロジェクト

既存のアプリケーションで同じコード (画像ファイル名を除く)を使用すると、次のような NSSavePanel が得られます。

ここに画像の説明を入力

主な違い:

  • 表示されるウィンドウがアクティブにならない
  • タイトル バーは、ウィンドウの残りの部分から分離されていません
  • ボタンでもテキストフィールドでもない何かをクリックするたびに、まるでドラッグしようとしているかのように、ウィンドウが画面を数ピクセル下にジャンプします。

ここで一体何が起きているのでしょうか?明らかに、問題はコードのスニペットだけではありません。誰がそれが何であるか知っていますか?