問題タブ [nscell]

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 に答える
1089 参照

cocoa - NSCell (NSTextAttachmentCell) でのマウスオーバーの処理

マウスオーバーNSCell(またはNSTextAttachmentCell) の処理方法がわかりません。出来ますか ?

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

nsoutlineview - 別の NSCell が変更されたときに NSCell をリフレッシュする

NSOutlineView に 2 つの列があります。1 つは Text and image セルです (DragNDropOutlineView Apple サンプル コードのクラスに似ています)。その隣には、「XFToggleCell」と呼ばれるカスタム NSCell サブクラスがあり、オンとオフを切り替えることができる可視性アイコン (眼球) を表示するために使用されます (Photoshop と同様)。

XFToggleCell は、マウス トラッキング/ドラッグ (これも Photoshop と同様) をサポートしているため、1 つの目玉をクリックしてから下にドラッグすると、一度に複数のアイテムを表示/非表示にすることができます。テキストと画像のセルでは、アイテムが非表示の場合はテキストを灰色で表示し、非表示の場合は黒で表示します。

ほとんどすべてが正常に機能しています。目玉 (XFToggleCell) をクリックすると、画像が消えてモデル オブジェクトが非表示になります。ただし、トグルセルをもう一度クリックするまで、隣接するテキストと画像セルのフォントは灰色になりません(更新されません)...そして、そうすると、画像とテキストセルのテキストの色は常に何の反対になりますそうである必要があります (可視性をクリックすると、テキストが灰色になり、その逆も同様です)。

これが発生する理由は、トグル セルの値が変更される前にテキストと画像のセルが再描画されているためだと判断しました。その結果、その表示は常に「1 クリック後」になります。シーケンスは次のようになります。

  1. 列 1 のトグル セルをマウスダウンします。
  2. 列 0 のテキストと画像のセルが再描画されます。
  3. 列 1 のトグル セルのオブジェクト値が変更されます。
  4. 列 1 のトグル セルが再描画されます。

上記の手順 5 のように、列 0 のテキストと画像のセルを強制的に再描画できれば、問題ありません。

列 1 のセルをクリックした結果、列 0 のテキストと画像セルの描画を強制的に更新するにはどうすればよいですか?

これが私が重要なメソッドだと思うものの実装です...列1にある私のXFToggleCell.mでは:

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

objective-c - NSTextFieldCell を使用しない NSCell セルの背景色の変更

現在、テーブルには 4 つの列があります。3 つは NSTextFieldCells で、1 つは NSCell を使用するカスタム セルです。行の色を変更する必要があります。NSTextFieldCells の色を変更しましたが、NSCell の背景色を変更する必要があります。それを行う方法はありますか? NSTextFieldCell を使用してこの 1 つのセルを実行することは絶対にできません。

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

objective-c - NSCellの再描画の問題

いくつかのオブジェクトを(を使用して)NSCellビューに直接描画し、 NSViewのセレクターを使用してインスタンスを描画するサブクラスを作成しています。drawInRect:fromRect:operation:fraction:respectFlipped:hints:NSButtonaddSubview:

最初の方法を使用して描画されたオブジェクトはすべて正しく描画されますが、NSButton正しく描画するのに問題があります。問題は、私のNSButtonインスタンスが適切な場所に描画されますが、何度も描画されることです。

私はこれをインターネットでしばらく調べており、キャッシュの使用を提案する人もいますが、これが効率的かどうかはわかりません。(forループを使用してボタンを含む配列に移動すると、大量のデータを表示するため、間違いなくスクロールが遅くなります...)

これをどのように行いますか?私は間違った木を吠えていますか?

これは関連するコードです:

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

cocoa - NSSearchField に NSTokenFieldCell を使用させますか?

10.7+ で Mail.app と Finder.app のトークン化された検索機能をエミュレートしようとしていますが、左側に検索虫眼鏡アイコンがあり、右側にキャンセル (x) ボタンがある NSSearchField のように見えますが、検索フィールド内のトークンも含まれます。

トークンを含む NSSearchField

NSSearchField で NSSearchFieldCell の代わりに NSTokenFieldCell を使用する方法はありますか? -setCell:NSSearchField インスタンスを呼び出してみましたが、これは機能po [searchField cell]し、デバッガーで呼び出すことで証明されるようにセルをスワップアウトするように見えますが、検索フィールドの描画が壊れ、テキスト フィールドが描画されません。

私はこれに正しい方法で取り組んでいますか、それともより良い方法がありますか? ありがとう!

2016 年 10 月 25 日更新: アクセシビリティ インスペクターを使用すると、Finder とメールがプライベート サブクラスを組み合わせて使用​​していることがわかりました。

  • SGTSearchField : NSSearchField
    • SGTSearchFieldCell : NSSearchFieldCell
    • SGTTokenFieldCell : NSTokenFieldCell

これらは、 と呼ばれるプライベート フレームワークの一部ですSuggestions.framework。Apple がこれらのクラスを将来的に公開することを願っています。この機能も公開したい場合は、必ずレーダーを提出してください。

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

macos - カスタム NSCell の編集

私は、XCode のショートカット キャプチャ セルのように機能するカスタム NSCell を作成し、編集要求をインターセプトする方法を見つけようとしています (たとえば、ユーザーがセルをダブルクリックしたとき)。編集が開始されていることを確認する方法はありますか?

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

objective-c - NSCell の予期しない動作

NSActionCell( 内に)のサブクラスを実装していて、NSTableView異常なことに気付きました。isEditingユーザーがセルをクリックしたときにプロパティ ( ) を設定すると、NSCellその後すぐに解放されるため、そのプロパティの値は失われます。コピーを正しく処理していないためにこれが発生していると想定したため、 を追加しましcopyWithZoneた。今、私はcopyWithZone呼ばれているのを見ています - しかし、それは予期しないインスタンスで呼び出されています - そしてそのインスタンスのプロパティはNO- デフォルト値です。が呼び出されるたびcopyWithZoneに、この同じインスタンスで呼び出されます。

誰でもこの動作に光を当てることができますか? 問題のサブクラスと、取得している出力を添付しています。ユーザーが別のセルをクリックしたときにセルのプロパティを保持するには、正確に何をする必要がありますか?

出力 (ユーザーがセルをクリックすると生成される):

そして別のクリック(別のセルで):

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

macos - NSCellのタイトルは、要求されるまで更新されません

ユーザーがテキストを挿入しているときに自動的にサイズを変更するカスタムの「NSTextField」を実装しようとしています。

これは十分に単純なタスクであり、これが私が使用しているコードです。

どちらが仕事をしますか。NSTextField好奇心は、のセルタイトルを呼び出す行にコメントすると

動作を停止します。セルは要求されるまでタイトルを更新しないようです。もちろん、セルのタイトルが変更されない場合、ユーザーがテキストを入力したときにテキストフィールドのサイズを変更することはできません。

この動作は機能ですか、それともバグですか?

私が言ったように、上記のコードは仕事をするので、これはもっと好奇心です。唯一の煩わしさは、回線が警告を生成することです。これを行うためのより良い方法があるかどうかを知りたいと思います。

編集:[(NSCell *)self.cell title];コンパイラへの行を変更すると文句が止まるかどうかを理解したことを気にしないでください。ただし、機能やバグに対する好奇心は依然として残っています。

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

nstableview - Cocoa: カスタム NSCell がダブルクリック アクションに応答しない

私は 10.6 でサポートされているココア アプリに焦点を当てており、セルベースのNSTableView.

NSCell画像とテキストを表示できるようにカスタムします。ここでの問題は次のとおりです。テーブルビューに設定するdoubleClickActionと、応答しませんでした。

カスタムセルのおかげで、私はすでにそれを見つけました。セルが応答チェーンを停止していると思いますが、それを修正する方法がわかりません。ドキュメントを検索しましたが、どのメソッドをオーバーライドすればよいかわかりません。

いくつかのガイドと感謝をお願いします!