問題タブ [appkit]

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 投票する
6 に答える
4949 参照

cocoa - AppKitのUIKitの[NSStringsizeWithFont:constrainedToSize:]

AppKit(Mac OS XのCocoa用)にUIKitと同じことを行う同等の方法はあります[NSString sizeWithFont:constrainedToSize:]か?

そうでない場合、特定の文字列を幅/高さに制限してレンダリングするために必要なスペースの量を取得するにはどうすればよいですか?

更新:以下は、私が使用しているコードのスニペットであり、私が求めている結果が得られると期待しています。

出力幅は200で、高さは1行の高さよりも大きくなると思いますが、次のようになります。

ありがとう!

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

python - PythonでNSImageからビットマップデータを抽出する

NSImage からのデータを使用して wx.MemoryDC を構築していますが、結果のコードは非常に遅くなります。TIFFRepresentation -> ImageFromStreamステップは、物事を遅くするものだと私には思えます。この手順 (このすべてのストリーミング) を回避し、NSImage データから直接 MemoryDC を初期化する方法はありますか? サンプルコードは次のとおりです。

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

cocoa - NSTableView: 表示されたツールチップをどのように更新しますか?

私のNSTableViewでは、定義しました

これは表示したい文字列を返し、NSTableViewはその文字列をツールチップとして表示します。

問題は、ツールチップが表示されている間に同じテーブル セル内でマウスをクリックすると、上記のメソッドが別の文字列を返すことです。ただし、表示されているツールチップを更新する必要があることをテーブルに伝える方法がわかりません。

-removeAllToolTips を呼び出してみましたが、予想どおり何もしませんでした。

[sender setToolTip:@""]; を呼び出すことで、ツールチップを非表示にすることができます。とはいえ、素敵でゆっくりとしたフェードアウトではなく、突然消えます。

ただし、マウスを動かして待たない限り、ツールチップは更新されたテキストで再表示されません....私が望む動作ではありません。

表示されているツールチップを更新する必要があることをテーブルに伝える方法はありますか?

これをより適切に処理する方法について、他のアイデアや考えはありますか?

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

objective-c - awakeFromNib の完了時にサブビューが消える

NSBox サブビュー (シャドウに対して CA が有効になっている) を持つビューがあり、awakeFromNib 中に NSView サブクラスをボックスに動的に追加しようとしています。

これらの NSView の数はユーザーによって異なるため、ボックス内に適切に配置するために作成する行と列の数を決定するコードをいくつか作成しました。(私はすでに NSMatrix を検討しましたが、意図したとおりにレイアウトしません)

問題は、awakeFromNib メソッドが終了した後、サブビューが突然消えることです。私はそれを追跡するためにたくさんの NSLog ステートメントを入れましたが、サブビューが消える前に明らかに NSBox に追加されていることがわかりました。アプリを実行すると、サブビューがほんの少しだけ表示され、アニメーションが終了すると消えます。

これが私のawakeFromNibメソッドです:

これに関するヘルプは大歓迎です!

スティーブ

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

objective-c - プログラムによる NSSplitView のサイズ変更

以前は RBSplitView を愛用していましたが、特定のバージョンの xcode が IB プラグインをサポートしなくなったため、プログラムで再実装することに失敗しました。

したがって、NSSplitView の使用に戻りました。NSSplitView は私が必要とするものには問題ありません。問題は、NSSplitView の autoSave が壊れていることです。だから私はそれを自分で実装することにしました。

私が現在行っていることは、NSSplitView のサブビューの 1 つのサイズを変更することです。

NSSplitViewのサイズを変更する適切な方法は何ですか? - setPositionOfDivider:itIndex: を使用する必要があります (試したことはありません) が、分割線の現在の位置を取得する方法がわかりません。

- 前もって感謝します

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

cocoa - LSUIElementがYESに設定されている場合、どのようにショートカットを処理できますか?

LSUIElementがに設定されている場合、NOほとんどのショートカットはアプリケーションのメインメニューによって処理されます。ただし、LSUIElementがに設定されている場合YES、メインメニューはなく、一般的なショートカットはファーストレスポンダーに転送されません。

単純なソリューションはperformKeyEquivalent:、ビュー/ウィンドウクラスごとにオーバーライドされます。ただし、特別なショートカットではなく、一般的なショートカットのみを処理したいと思います。だから、私はより良い解決策を探しています。

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

objective-c - Cocoa: 入力デバイスを区別する / scrollWheel: マウスのスクロール ホイールとトラックパッドとして

[NSResponder scrollWheel:]ユーザーの入力デバイスに1次元のスクロールホイールまたは2次元のトラックパッド/マジックマウスがあるかどうかを確実に区別する方法を探していますか?

最初に、別の動作を実装したいと思います。しかし、 の deltaX を見るだけでNSEventは少し弱いでしょう。助言がありますか?

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

objective-c - テキストフィールドのカーソルが点滅しているためにdrawRectが呼び出されるのはなぜですか?

プログラムに次のビュー階層を設定しています。

ユーザーがTextFieldをクリックすると、その中のカーソルが点滅し始めます。点滅するたびに、myCustomViewでdrawRectが呼び出されます。大したことではありませんが、なぜだろうか?

MyCustomOpaqueViewでは、isOpaqueを次のように実装します。

drawRectに渡されたNSRectが不透明なビューによって完全に隠されている場合、これによりMyCustomViewのdrawRectへのメッセージがブロックされると思いましたが、カーソルが点滅しても、MyCustomViewにはNSRectが完全に不透明なビューの背後にあるdrawRectメッセージが送信されます。

私は重要な概念を見逃していますか、それともこれは点滅するカーソルの癖ですか?


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

objective-c - NSImage -lockFocusFlipped の奇妙な問題:

NSImageのメソッドを使用-lockFocusFlipped:して、画像に描画しています。私のコードは次のようになります。

このコードは、特定のポイントまで機能します。[[NSGraphicsContext currentContext] isFlipped]を返すYESため、またshapeRectが正しい位置に描画されるため (左上隅を原点として使用) 、コンテキストが実際に反転されていることを確認できます。とNSShadowはいえ、コンテキストの反転状態を尊重していないようです。シャドウ オフセットを に設定すると、コンテキストが反転したとき(0, 3)にシャドウが下に移動するはずですが、実際には上に移動します(これは、標準の非反転コンテキストで発生することです)。

この問題は に固有のよう-lockFocusFlippedです。この同じコードを使用CALayerして反転した座標系に描画すると、影がうまく描画されるためです (反転を考慮して)。のドキュメント-lockFocusFlippedも非常に曖昧なようです。これは、NSImageクラスのドキュメントに記載されているすべてです。

指定された反転状態を使用して描画コマンドを受け取るようにイメージを準備します。

また、Snow Leopard AppKit リリース ノートにも次のメモがありました。

たとえば、NSLayoutManager を介して直接描画する場合など、反転したコンテキストが必要になる場合があります。このケースをカバーするために、追加します

- (void)lockFocusFlipped:(BOOL)flipped;

これは画像自体の状態を変更せず、フォーカスがロックされているコンテキストのみを変更します。ロックされたコンテキストでは、(0,0) が左上にあり、Y 軸に沿った正が下にあることを意味します。

NSShadowこの場合、どのドキュメントも の動作を説明していないようです。さらにテストを重ねた結果、いずれかNSGradientで使用される描画コンテキストの反転状態を尊重していないようですNSImage

どんな洞察も大歓迎です:-)

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

objective-c - MacAppStoreでのNSPreferencesなどの文書化されていないクラスの使用

SafariとMailで使用されているように見える、文書化されていないクラスがありNSPreferences、複数ページの設定ページの作成が容易になります。

NSPreferencesMac App Storeに提出されたアプリケーションで、文書化されていないが便利で楽しい機能を使用した経験のある人はいますか?