問題タブ [nswindow]
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.
subclass - 画像からカスタム NSWindow を描画する
NSWindow を作成するための画像 (4 つのコーナー、タイトル バー (+ 閉じるボタン)、下部バー、塗りつぶし) があります。drawRect:
しかし、NSWindowにするメソッドに何を書けばいいのかわかりません。どこから始めればよいですか?
objective-c - Objective-C でアプリケーションを使用していない場合にウィンドウを前面に配置する方法
アプリケーションに参加せずに「makeKeyAndOrderToFront」を作成する方法はありますか?
私がSafariにいて、メニューバーにアプリへのMenuItemがある場合、これを押した後、アプリのウィンドウを前面に表示したいと思います(アプリケーションにいる場合にのみ、makeKeyAndOrderToFrontがこれを作成します)。
どの方法を使用できますか? また、このウィンドウをアニメーション化するにはどうすればよいですか (Tweeties Add new Tweet -> atebits.com など)。
ありがとうございました!
cocoa - 古いウィンドウを閉じた後の新しいウィンドウの場所
複数のウィンドウを許可するアプリがあります。ウィンドウを繰り返し開閉すると、新しいウィンドウが画面の上下に配置されるという奇妙なバグがあります。ウィンドウを開いたままにしておけばこれを期待できますが、OSXウィンドウタイリングメカニズムはウィンドウがいつ閉じているかを認識していないようです。
関連する可能性のあるメモ:ガベージコレクションを使用しています。これはドキュメントベースのアプリではありません。ウィンドウを閉じると、対応するメニュー項目が「ウィンドウ」メニューから削除されます。
私が間違っているかもしれないことについてのヒントをいただければ幸いです。ありがとう!
cocoa - Cocoa: 可変数のインターフェイス要素を持つウィンドウの作成
リモート サーバーのコンテンツによって決まる未知の量のテキスト フィールドを持つウィンドウがあります。
大まかに言えば、これについてどうすればよいですか?カスタム ビューを作成するか、バッキング NSWindowController を使用して空のウィンドウを作成し、ウィンドウが開いたときにそれに何かを追加しますか?
O'Reilly Cocoa book の例を見たことがありますが、それらは効果的にカスタム NSView を作成します。8年後、これは正しい方法ですか?
cocoa - NSDocumentサブクラスがNSWindowControllerによって閉じられていませんか?
さて、私はCocoaとObjective-C、そして一般的にOOPにかなり慣れていません。
背景として、ユーザーのドキュメントをパッケージに保存する拡張可能なエディターに取り組んでいます。もちろん、これにはいくつかの問題を回避するための「楽しみ」が必要でした(つまり、バンドル内のすべてのドキュメントNSFileWrapper
を作成しないようにするための、やや卑劣な書き込みと読み込みのプロセス)。私が到達した解決策は、基本的にサブクラスを単なるシェルとしてNSFileWrappers
扱うことでした。それを使用してバンドルのフォルダーを作成し、ドキュメントの実際のコンテンツの書き込みを他のメソッドに渡します。NSDocument
残念ながら、ある時点で私は完全に犬をねじ込んだようです。これがどのように発生したかはわかりませんが、ドキュメントウィンドウを閉じてもドキュメントが解放されなくなりました。ウィンドウが正常に閉じても、ドキュメントオブジェクトは「閉じる」メッセージ(または関連するメッセージ)を受信していないようです。
その結果、アプリを起動し、新しいドキュメントを作成して保存し、閉じてから再度開こうとすると、ドキュメントウィンドウが表示されなくなります。いくつかのクリエイティブなサブクラス化とを使用NSLogging
して、ドキュメントオブジェクトがまだメモリ内にあり、NSDocumentController
インスタンスにアタッチされていることがわかりました。そのため、ドキュメントを開こうとしても、NSDocumentController's
「うーん、現在、そのオブジェクトを開いています」チェックを通過することはありませんでした。
NSWindowController
とインスタンスはありNSDocumentController
ましたが、プロジェクトから完全に削除しました。NSDocument
問題がどこにあるかを見つけるために、ほぼすべての方法をオーバーライドしました。私の知る限り、Interface Builderのバインディングはすべて正しいです。メインメニューの「閉じる」はperformClose:
、ファーストレスポンダーなどにアタッチされています。また、新しいメインメニューとドキュメントxibも試してみました。
バンドルのコードを書くのはおかしいのではないかと思ったので、基本的にすべて削除してゼロから始めましたが、うまくいかなかったようです。メソッドオーバーライドを削除しました-init
が、それも役に立ちませんでした。ここには単純なドキュメントアプリのソースがないため、次の論理的な手順を試しませんでした(readFromUrl
andwriteToUrl
メソッドで既知の動作するコードを私のものに置き換える)。
私はこの問題を約16時間途切れることなくトラブルシューティングしてきましたが、言うまでもなく、私はロープの終わりにいます。理解できない場合は、バンドルドキュメントの混乱に基づいて、より多くのコードと強度を使用して、プロジェクトを最初から試してみるつもりです。
cocoa - addSubviewと自動サイズ設定
ウィンドウにビューを追加して、ウィンドウフレーム内に収まるようにビューのサイズを変更するにはどうすればよいですか?
問題
2つのビューを含むシートウィンドウを作成していますが、一度に1つしか表示されないため、ビューのサイズがウィンドウと同じであることが重要です。私の問題は、view0が正しく適合し、view1が適合しないか、またはその逆であるということです。窓と同じ大きさにする方法がわかりません。
考えられる解決策
両方のビューがInterfaceBuilder内で正確に同じサイズであることを確認できれば、機能します。しかし、私はこれをプログラムで行う方法を探しています。
view0のスクリーンショット
以下に、ビューが何らかの形でクリップされている上部と右側の自動サイズ変更の問題を示します。
(ソース:flickr.com)
view1のスクリーンショット
このビューは正しくサイズ変更されます。
(ソース:flickr.com)
これが私のコードです
ビューをウィンドウに追加する前に、ビューのサイズを変更できますか。または、ウィンドウフレームを変更しながら、ビューを1つずつ追加するのと同じように行う方がよいでしょう。どうしますか?
cocoa - NSWindowDidExposeNotification の使用方法
別のウィンドウが表示されたときに別のウィンドウを更新しようとしています。それで、NSWindowDidExposeNotification を見つけて、それを操作しようとしたので、awakeFromNib に次のように書きました。
メソッドを実装しました
しかし、奇妙に呼び出されることはありません。ここで何が間違っていますか?
objective-c - NSWindowを開き、ウィンドウを選択してフォーカスを合わせるにはどうすればよいですか?
次のコードを使用してNSWindowを開こうとしています。
ウィンドウは正常に開きますが、前のウィンドウは引き続きmainWindowであり、フォーカスがあります。次のコードを実行してメインウィンドウを強制しようとしましたが、機能しません。ウィンドウにはまだ無効なタイトルバーがあり、キーイベントなどを受け入れていません。
前のウィンドウのフォーカスを失うことができるように見える唯一の方法は、showWindowを呼び出した後にウィンドウを閉じる場合です。with[[NSApp mainWindow] close];
何か案は?
cocoa - NSWindow が最初に mouseOver イベントしか受信しないのはなぜですか?
orderOut と orderFront を使用して、ボーダレス ウィンドウを表示および非表示にするアプリケーションがあります。表示されている場合は、マウスが上に移動したときにキーウィンドウになるようにします。これまでのところ、私はこれを行ってきました:
- awakeFromNib では、ファーストレスポンダーを自分自身に設定しました。
- ウィンドウのコンストラクターで、マウスイベントを受け入れるように設定しました。
- mouseMoved メソッドでは、makeKeyAndOrderToFront を使用します。
私の問題は、マウスをウィンドウ上に初めて移動したときにのみ機能することです。その後、mouseOver イベントを受け取りません。firstResponder をチェックしてみましたが、私が知る限り、ウィンドウから変更されることはありません。
これを機能させるために私ができることはありますか?
objective-c - NSWindowController と isWindowLoaded
NSWindowController があり、次のように初期化します。
このようなウィンドウを表示します。
問題は、そのウィンドウのいくつかのコントロールからの情報が必要なことです。ただし、ウィンドウがまだロードされていない場合はロードしたくありません。それは、デフォルトのままでよいからです。isWindowLoaded を使用する必要がありますか? シングルトンにアクセスする @property? またはここで何が推奨されていますか?(@property の場合は、読み取り専用の非アトミック属性も教えてください。)