問題タブ [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.
cocoa - NSPanelでのコントロールの初期化
アプリにNSPanelがあり、データエクスポート機能として使用しています。
パネルが最初に表示されたときに、パネルのコントロールを初期化するにはどうすればよいですか?(つまり、NSDefaultsを使用します)。デフォルト設定を復元できるウィンドウ/パネルが開いたときに発生するイベントはないようです(基本的にはNSPopupButtonの値を復元するだけです)。
現在、AppDelegateクラスで「[NSAppbeginSheet...]」を使用してパネルを開いています。代わりにNSWindowControllerサブクラスを使用する必要がありますか?
objective-c - ドキュメントベースのアプリケーションで複数のドキュメントのパネルを再利用する
ドキュメントベースのアプリケーションを作成していますが、開いている複数のドキュメントで再利用される 1 つの NSPanel を使用したいと考えています。
最初に開いているドキュメントの NSPanel で設定を変更してから、別の開いているドキュメントをクリックできるはずです。2 番目に開いているドキュメントをクリックすると、NSPanel が更新され、アクティブなドキュメントの設定が表示されます。
このセットアップを構成する適切な方法は何でしょうか?
cocoa - NSPanel でタイトルバーの高さを変更する
NSPanel のタイトルバーの高さを変更しようとしています。次のことを試しましたが、期待どおりに機能しませんでした。
objective-c - InterfaceBuilderで「タイトルバー」がチェックされていないNSPanelが表示されない
だから私は自分の基地をカバーしたと思ったが、どうやら私は重要なステップを1つか2つ逃しているようだ。
makeKeyAndOrderFront:
NSStatusItemが押されたときに表示される()NSPanelがあります。物事はうまく機能しますが、NSPanelがタイトルバーを表示するので、パネルもドラッグ可能です。(これは望ましくありません。)
最初のスクリーンショットは、InterfaceBuilderの[外観]カテゴリで[タイトルバー]が有効になっているパネルを示しています。(ぼやけて申し訳ありませんが、物事は今のところまだロックとキーの下にあります。)
Interface Builderで行われる唯一の変更は、[タイトルバー]チェックボックスをオフにすることです。次に、保存して再実行します。これが2番目のスクリーンショットに表示されています。わずかな影が表示されますが、パネルには表示されません。
私が試したこと:
NSPanelをサブクラス化して、少し調査した後、戻ってきましたが
YES
、(サブクラス化する前に)これらのメソッドは、タイトルバーを使用しているかどうかに関係なく両方とも戻ってきました。ですから、これは問題ではないと思います。canBecomeKeyWindow
canBecomeMainWindow
NO
NSPanelのフレームが正しく設定されていることを確認しました。高さが良く、原点もきちんと設定されています。
編集:言及するのを忘れた:
このアプリケーションは、メニューバーのみのアプリケーションです。Info.plist
以下のスクリーンショットでは、これを強制するために追加のエントリが追加されていることに注意してください。
objective-c - NSPanelがフォーカスを取得したとき、またはキーになったときを知る方法は?
XCode4でCocoa/Objective-Cアプリを作成していますが、設定パネルがいつ開かれるかを知る必要があります。windowDidBecomeKeyのようなコールバックが必要です。私はこの質問で提供された解決策に従おうとしましたが、どちらもwindowDidBecomeKey
デリゲートwindowDidExpose
メソッドとして表示されません(ただし、、などの他のメソッドwindowDidLoad
はwindowWillLoad
そうします)。
「デリゲートメソッドとして表示されない」とはどういう意味かを明確にするために、メソッド名を入力し始めたときにオートコンプリートに表示されないことを意味します。とにかくそれらを定義しようとしましたが、呼び出されることはありませんでした。
オブジェクトにはこれらのメソッドがありませNSPanel
んか、それとも私がしなければならないことがもっとありますか?
現在、私はインターフェースを持っていますPrefWindowController
:
PrefWindowController.h:
PrefWindowController.m:
アプリケーションの起動時にウィンドウが.xibから読み込まれると、起動し、windowDidLoad
上記で定義された通知が表示されます。これは、メソッドが実際に呼び出されていることをテストするためだけに行いました。
パネルが重要になったとき、または焦点が合ったときにコールバックを取得する方法についてのアドバイスは非常に役立ちます。
アップデート:
windowDidBecomeKey
次のようなメソッドをウィンドウコントローラーに追加しました。
PrefWindowController.h:
PrefWindowController.m:
ウィンドウを初めて開いたときにテストメッセージがログに記録されますが、main.m
ファイルの戻り行に次のエラーが表示されます。
スレッド1:プログラム受信信号: "EXC_BAD_ACCESS"
cocoa - iWork スタイルの Inspector パネルのタブ
iWork '09 Inspector に表示されるタブ ボタンの外観を取得するにはどうすればよいNSPanel
ですか?
私が得ることができる最も近いのはNSSegmentedControl
、「小さな正方形」スタイルです。残念ながら、少なくとも Snow Leopard では、青い選択ではなく灰色の選択になります。
さまざまな iWork '09 Inspector で青みがかったアクア スタイルの選択を取得するために Apple が行ったアイデアはありNSPanel
ますか?
cocoa - カスタム シート : ボタンをクリックできない
このソースを使用しましたhttp://www.cats.rwth-aachen.de/library/programming/cocoa
カスタムシートを作成します。
NSPanel
既存の .xib ファイルにオブジェクトを作成し、接続しましたIBOutlet
私のソースコード:
.h
.m
正常callPanel
に動作し、シートが表示されますが、シート上のコントロール (ボタンを使用) を操作できません。クリックしても反応しません (視覚的にも)。
問題はどこにありますか?
cocoa - NSPanelが間違ったスペースにポップアップする
だから、私はこのソースを調べて、NSPanelを使用してカスタムポップオーバーでこれらのステータスバーアプリケーションの1つを作成しようとしています-
すべて正常に動作し、ダンディです。ほとんどの場合に機能するメニューレット呼び出し[panel makeKeyandOrderFront:nil]
をクリックすると、ウィンドウは通常、他のすべての前の正しいスペースにポップアップ表示されます。
ただし、フルスクリーンスペース(フルスクリーンモードのXcodeなど)に移動してそこでメニューアプリケーションを使用しようとすると、パネルが間違ったスペース(以前に表示されたスペース)にポップアップし、意図した場所に何も表示されません。スペース。もう一度クリックして初めて、適切な場所に表示されます。
誰かがこの現象の説明がありますか?
objective-c - シートを表示しても、メインアプリを機能させる
このloadFile
メソッドはNSTimer
、whileループでアプリケーションをブロックすることなく、時間の経過とともにプロセスにファイルをロードすることを開始します。このタイマーは、コードの最初のビットでは起動せず、2番目のビットで起動します。問題は、2番目のビットがシートをシートではなくパネルスタイルのウィンドウとして表示することです。
まだ機能するシートを入手するにはどうすればよいですか?
シートを表示しますが、作業は行われません
ウィンドウを表示すると作業が完了します
xcode - NSPanel はモーダルですが、フォーカスを失います
NSPanel の 1 つに奇妙な問題があります。アプリケーションを起動し、NSTextField と NSButton のみの単純なパネルを使用して、プレーヤーの名前を取得します。アプリケーションで他の作業を行っていると、突然、アプリの起動時にパネルがフォーカスされなくなりました。ボタンは機能しますが、テキスト フィールドはフォーカスされず、入力を受け付けません。
どんなアイデアでも大歓迎です。
乾杯、
生活