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

cocoa - NSWindow / NSPanel がフルスクリーン アプリケーションの前面に表示されない

私のアプリには、ユーティリティ ウィンドウがあります (実際には NSPanel オブジェクトです)。いつか表示され、他のアプリケーションのウィンドウの前に表示されます。

ただし、他のアプリケーションがフルスクリーン モードで実行されている場合、ユーティリティ ウィンドウは表示されません。しかし、フルスクリーン アプリケーションを実行すると、新しいデスクトップが作成されることがわかりました。

(ここのデスクトップは、他の質問で人々が話しているスペースだと思います。)

Launchpad で「Mission Control」を確認すると、元のデスクトップにユーティリティ ウィンドウが表示されていましたが、ユーザーが現在見ている新しいデスクトップにはフルスクリーン アプリケーションが表示されていました。

ドキュメントを読んだところ、同様の質問がいくつか見つかりました。ウィンドウのコレクション動作を設定する必要があるようです。だから私はこれを試しました:

うまくいきません。

フルスクリーン アプリケーションが作成した現在のデスクトップ/スペースにウィンドウを移動するにはどうすればよいですか?

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

macos - 次の NSView レイアウトが発生した後に何かを行うにはどうすればよいですか?

ユーザー イベントに応答して、次のことを行います。

  • ウィンドウに新しい NSView を追加してから、
  • そのビューのすぐ下に配置された NSPanel を表示します

私はこれを半分ずつやりました。新しいサブビューを追加できます。コンテナ ビュー-updateConstraintsはそれを識別し、正しいレイアウト制約を追加します。これにより、次にレイアウトが実行されたときにウィンドウに正しく配置されます。また、パネルを画面に表示する NSWindowController サブクラスがあります。

残念ながら、注文に問題があります。私のパネルのコントローラーは、新しい NSView のframeプロパティを見て配置場所を決定するだけですが、このメイン イベント ループの繰り返しの間、-layoutメソッドはまだ呼び出されていないため、まだ (0,0) に配置されています。

(これら 2 つの機能を分離し、「ビューの追加」と「パネルの作成」に 2 つの別個のユーザー イベントが必要な場合、パネルはビューの下に正しく配置されます。)

レイアウトの制約があるかのように、NSPanel を NSView にアタッチする方法はありますか? -layoutまたは、「これを行う(ウィンドウコントローラーのもの)が、次の呼び出しの後でのみ」と言う方法はありますか?

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

macos - アクティブ化されていないフローティング パネルにサイズ変更カーソルを表示するにはどうすればよいですか?

非アクティブなフローティング NSPanel があります。つまり、フラグstyleMaskが含まれています。NSNonactivatingPanelMaskこのパネルは決してアクティブにならないため、パネルの端の 1 つに近づくと、システムは通常のサイズ変更カーソルを表示しません。

これらのサイズ変更カーソルをアクティブ化されていないパネルに表示する方法はありますか? たとえば、システムのフォントパネルはこれを何らかの形で実現します。

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

cocoa - NSPanel での NSTableView のリロード (メイン ウィンドウではない)

メイン ウィンドウから、2 番目の画面で NSPanel を開き、コンテンツ ビューに NSTableView を表示します。reloadData では、TableView は更新を行いますが、画面上ではデータが更新されませんでした。F3 を作成するか、デスクトップを変更する必要があり、TableView はコンテンツを更新します...何が問題なのですか?

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

macos - NSWindow/NSView をクリックしたときにアプリケーションが起動しないようにする

私はスクリーンショットのMacアプリに取り組んでいます。Cmd-Ctrl-Shift-4 を押したときに何が起こるかを再構築しようとしています: 十字カーソルとスクリーンショットの選択範囲。

他のすべてのウィンドウの上にカスタムのボーダーレス NSWindow を使用しています。カーソルを無効にして、選択長方形と一緒に独自のカーソルを描画しました。

私の問題は、クリックしてドラッグしてスクリーンショットをキャプチャするとすぐに、アプリがアクティブになることです (クリックがシールド ウィンドウによって傍受されるため)。

アプリをアクティブ化せずに、カスタム ビュー/ウィンドウでクリックを受け取る方法はありますか?

フラグでを使用してみNSPanelましたNSNonactivatingPanelMaskが、この場合、カーソルに問題があります。他のアプリのカーソルを非表示にできないため、別のアプリがアクティブなときに自分で描画できません...