問題タブ [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 に答える
5655 参照

objective-c - EXC_BAD_ACCESS ブロックの呼び出し

更新 | パネルを使用してクラッシュするサンプル プロジェクトをここにアップロードしました: http://w3style.co.uk/~d11wtq/BlocksCrash.tar.gzまだ実装されていません)。

更新 2 | newFilePanelクラッシュを引き起こすために何かを呼び出す必要さえないことを発見したばかりで、ステートメントで使用するだけで済みます。

これもクラッシュを引き起こします。

コンソールに最後にダンプされるのは、「dyld_stub_objc_msgSend_stret を逆アセンブルできません」である場合もあれば、「アドレス 0xa のメモリにアクセスできません」である場合もあります。

私は独自のシート (NSPanel サブクラス) を作成しました。これは、NSOpenPanel/NSSavePanel に似た API を提供しようとします。シートとして表示され、完了時にブロックが呼び出されます。

インターフェースは次のとおりです。

そして、実装内の主要なメソッド:

私のブロックが空の本体を持つノーオペレーションである場合、これはすべて機能します。シートが閉じられると、私のブロックが呼び出されます。

しかし、ブロック内からパネルにアクセスしようとするとすぐに、EXC_BAD_ACCESS でクラッシュします。たとえば、これはクラッシュします:

原因はデバッガーからは明らかではありません。スタックの最初の項目 (ゼロ 0) は単に「??」と表示されます。そして何も記載されていません。

スタック内の次の項目 (1 と 2) は、それぞれ と の呼び出し-endSheet:returnCode:です-dismissSheet:。デバッガーで変数を調べると、問題や範囲外のものはないようです。

パネルが解放されたのではないかと思っていましたが (自動解放されているため)、-retain作成した直後に呼び出しても役に立ちません。

私はこれを間違って実装していますか?

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

cocoa - シートと長時間実行タスク

ユーザーがボタンをクリックした後、複雑な(つまり長い)タスクを実行する必要があります。ボタンはシートを開き、dispatch_asyncおよびその他のGrandCentralDispatchのものを使用して長時間実行操作が開始されます。

私はコードを書きましたが、それは正常に機能しますが、すべてを正しく実行したかどうか、または(無知のために)潜在的な問題を無視したかどうかを理解するための助けが必要です。

ユーザーがボタンをクリックしてシートを開くと、ブロックには長いタスクが含まれます(この例では、for(;;)ループのみが実行されます。ブロックには、タスクの完了時にシートを閉じるロジックも含まれています。

パネルには、ユーザーがタスクを完了する前に停止できるようにする停止ボタンが含まれています

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

cocoa - プログラムでHUDウィンドウを作成する

ユーザーがメインビューを押したときに、プログラムでHUDのようなウィンドウを作成する必要があります。これが私が使用するコードですが、標準のウィンドウしか表示されません。

おそらく私は正しいフラグを使用していませんが、ドキュメントやGoogleで見つかりませんでした。何かご意見は?

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

cocoa - ツイッターのように他のすべてのウィンドウの上に浮かぶフロートウィンドウを作成するにはどうすればよいですか?

コンテキストメニュー「Tweet」をクリックすると、Twitterアプリにフロートウィンドウが表示されます。NSPanelですか?方法?

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

cocoa - NSPanel で Core Animation(エフェクト) の背後にあるぼかしを使用することは可能ですか?

ドック項目のコンテキスト メニューは、半透明であるだけでなく、その背後にあるコンテンツをぼかすこともできます。この効果は、半透明のフローティング パネルで使用できますか? これは、シート警告ダイアログで使用されるのと同じ効果です (変更を保存せずに終了するなど) が、その場合、透明度が異なり、背景が暗くではなく明るくなります

代替テキスト

いくつかの背景、フルスクリーンで頻繁に使用されるプロアプリがあり、フローティングパレットにはある程度の透明度がありますが、明らかに透明度が高いほど、背景が非常にアクティブ/ノイズが多い場合、それらのテキストを読むのが難しくなります. 「パレットの背後にあるもの」のコンテキストを許可しながら、テキストの読みやすさを大幅に向上させることができます。

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

cocoa - NSPanelのNSViewをキーウィンドウステータスのないファーストレスポンダーにする

NSPanelキーウィンドウのステータスを付与せずに(メインアプリケーションウィンドウを辞任キーにする)、NSPanelファーストレスポンダーステータス内にNSViewを付与することは可能ですか?

ありがとう。

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

objective-c - NSApp の ModalForWindow、NSAlert の ModalForWindow、および ModalSession に関するヒント

Objective-C の「ModalForWindow」言語と、その後のモーダル セッションの使用方法に関する混乱を解消するには、かなりの実験が必要でした。おそらく、次のヒントは誰かの時間を節約するでしょう:

(概念に慣れていない場合: ウィンドウ (通常はパネル) がモーダルで実行されると、ウィンドウが閉じられるまで、アプリの他の部分が応答しなくなります。)

「ModalForWindow」は、さまざまな状況でさまざまなことを意味します。xib によって定義されたパネルを表示するために loadNibNamed を使用していて、モーダルで実行したい場合は、表示されたらこれを呼び出します。

解雇方法でこれをフォローアップします。

しかし、NSAlert の場合、beginSheetModalForWindow の「ウィンドウ」は、アラートがシートとして添付されるウィンドウを指し、そのウィンドウはアラートが無視されるまで凍結されます。ただし、アプリは凍結されません。他のすべてのウィンドウは引き続き操作可能です。アラートをシートとして添付し、アプリの残りの部分 フリーズする場合は、beginSheet コードに従って runModal を簡単に呼び出し、次のように戻りコードを明示的に使用します。

(もちろん、クラスメソッドとして放棄AlertDidEnd:returnCode:contextInfo:コードを実装しているでしょう。)

または、アラートを中央のパネルとして実行する場合は、runModal を単独で呼び出します。

パネル モーダルを実行し、ユーザーが無効なエントリを送信した場合に警告を表示するとします。アラートを表示する前に stopModal を実行する必要があります — その後、なんらかの理由で runModalForWindow への別の呼び出しが正しく機能しません。このシナリオでは、モーダル セッションが必要です。

1) modalSession は複数のメソッドからアクセスできる必要があるため、コントローラ クラスに NSModalSession プロパティを追加します。

2) パネルを表示したら、beginModalSessionForWindow を呼び出して modalSession をインスタンス化します。

3) runModalSession を呼び出す while ループでこれをフォローアップし、その戻り値が NSRunContinuesResponse と等しくない場合に中断します。

ユーザーがパネルのボタンの 1 つをクリックすると、ループが中断され、アプリが解放されます。(パネルのテキスト フィールドに入力すると、モーダル セッションはそのまま残ります。)

4) ボタン処理で、ユーザーの入力が無効な場合、runModal でアラートを呼び出します。

5) アラート呼び出しのすぐ下、アラートが解除されたときに実行されるコードに、上記で使用したものと同じ while ループを配置します。パネルのモーダル セッションが再開されます。

6) パネルを閉じる処理では、有効な入力時またはキャンセル時に endModalSession を呼び出しますが、奇妙なことに、これでは十分ではありません。runModalForWindow を呼び出したことがない場合でも、stopModal も呼び出す必要があります。

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

objective-c - NSWindowに焦点を合わせて設定

このウィンドウに接続された1つのウィンドウと1つのパネルのアプリがあります。

手順:

  1. アプリを非アクティブ化します(アプリは開いていますが、フォーカスがありません)
  2. パネル上のボタンをクリックします(パネルは現在フォーカスされていますが、メインウィンドウはフォーカスされていません)

パネルからメインウィンドウ(親ウィンドウ)にフォーカスを設定するにはどうすればよいですか?

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

cocoa - HUD NSPanel の透明度が低い

Web を検索してきましたが、HUD の透明度 (タイトル バーを含むすべてのパネルの透明度) を変更する方法に遭遇しませんでした。それを変更することは可能ですか?

どうも

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

cocoa - いくつかのNSViewを含むバックグラウンドでNSPanelを移動する

私は持っていNSPanelます。パネルが空の場合、背景を押したままドラッグするとうまく動きます。ただし、何かを置くと、新しいビューでカバーされている領域はドラッグできなくなります。NSImageView例として、パネルを完全に塗りつぶすことができます。そして、パネルはもうドラッグされていません。ただし、画像ビューを保持しているユーザーでも、これをドラッグ可能にしたいと思います。これを行うにはどうすればよいですか?