問題タブ [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.
cocoa - NSCell (NSTextAttachmentCell) でのマウスオーバーの処理
マウスオーバーNSCell
(またはNSTextAttachmentCell
) の処理方法がわかりません。出来ますか ?
nsoutlineview - 別の NSCell が変更されたときに NSCell をリフレッシュする
NSOutlineView に 2 つの列があります。1 つは Text and image セルです (DragNDropOutlineView Apple サンプル コードのクラスに似ています)。その隣には、「XFToggleCell」と呼ばれるカスタム NSCell サブクラスがあり、オンとオフを切り替えることができる可視性アイコン (眼球) を表示するために使用されます (Photoshop と同様)。
XFToggleCell は、マウス トラッキング/ドラッグ (これも Photoshop と同様) をサポートしているため、1 つの目玉をクリックしてから下にドラッグすると、一度に複数のアイテムを表示/非表示にすることができます。テキストと画像のセルでは、アイテムが非表示の場合はテキストを灰色で表示し、非表示の場合は黒で表示します。
ほとんどすべてが正常に機能しています。目玉 (XFToggleCell) をクリックすると、画像が消えてモデル オブジェクトが非表示になります。ただし、トグルセルをもう一度クリックするまで、隣接するテキストと画像セルのフォントは灰色になりません(更新されません)...そして、そうすると、画像とテキストセルのテキストの色は常に何の反対になりますそうである必要があります (可視性をクリックすると、テキストが灰色になり、その逆も同様です)。
これが発生する理由は、トグル セルの値が変更される前にテキストと画像のセルが再描画されているためだと判断しました。その結果、その表示は常に「1 クリック後」になります。シーケンスは次のようになります。
- 列 1 のトグル セルをマウスダウンします。
- 列 0 のテキストと画像のセルが再描画されます。
- 列 1 のトグル セルのオブジェクト値が変更されます。
- 列 1 のトグル セルが再描画されます。
上記の手順 5 のように、列 0 のテキストと画像のセルを強制的に再描画できれば、問題ありません。
列 1 のセルをクリックした結果、列 0 のテキストと画像セルの描画を強制的に更新するにはどうすればよいですか?
これが私が重要なメソッドだと思うものの実装です...列1にある私のXFToggleCell.mでは:
objective-c - NSTextFieldCell を使用しない NSCell セルの背景色の変更
現在、テーブルには 4 つの列があります。3 つは NSTextFieldCells で、1 つは NSCell を使用するカスタム セルです。行の色を変更する必要があります。NSTextFieldCells の色を変更しましたが、NSCell の背景色を変更する必要があります。それを行う方法はありますか? NSTextFieldCell を使用してこの 1 つのセルを実行することは絶対にできません。
objective-c - NSCellの再描画の問題
いくつかのオブジェクトを(を使用して)NSCell
ビューに直接描画し、 NSViewのセレクターを使用してインスタンスを描画するサブクラスを作成しています。drawInRect:fromRect:operation:fraction:respectFlipped:hints:
NSButton
addSubview:
最初の方法を使用して描画されたオブジェクトはすべて正しく描画されますが、NSButton
正しく描画するのに問題があります。問題は、私のNSButton
インスタンスが適切な場所に描画されますが、何度も描画されることです。
私はこれをインターネットでしばらく調べており、キャッシュの使用を提案する人もいますが、これが効率的かどうかはわかりません。(forループを使用してボタンを含む配列に移動すると、大量のデータを表示するため、間違いなくスクロールが遅くなります...)
これをどのように行いますか?私は間違った木を吠えていますか?
これは関連するコードです:
cocoa - NSSearchField に NSTokenFieldCell を使用させますか?
10.7+ で Mail.app と Finder.app のトークン化された検索機能をエミュレートしようとしていますが、左側に検索虫眼鏡アイコンがあり、右側にキャンセル (x) ボタンがある NSSearchField のように見えますが、検索フィールド内のトークンも含まれます。
NSSearchField で NSSearchFieldCell の代わりに NSTokenFieldCell を使用する方法はありますか? -setCell:
NSSearchField インスタンスを呼び出してみましたが、これは機能po [searchField cell]
し、デバッガーで呼び出すことで証明されるようにセルをスワップアウトするように見えますが、検索フィールドの描画が壊れ、テキスト フィールドが描画されません。
私はこれに正しい方法で取り組んでいますか、それともより良い方法がありますか? ありがとう!
2016 年 10 月 25 日更新: アクセシビリティ インスペクターを使用すると、Finder とメールがプライベート サブクラスを組み合わせて使用していることがわかりました。
SGTSearchField : NSSearchField
SGTSearchFieldCell : NSSearchFieldCell
SGTTokenFieldCell : NSTokenFieldCell
これらは、 と呼ばれるプライベート フレームワークの一部ですSuggestions.framework
。Apple がこれらのクラスを将来的に公開することを願っています。この機能も公開したい場合は、必ずレーダーを提出してください。
macos - カスタム NSCell の編集
私は、XCode のショートカット キャプチャ セルのように機能するカスタム NSCell を作成し、編集要求をインターセプトする方法を見つけようとしています (たとえば、ユーザーがセルをダブルクリックしたとき)。編集が開始されていることを確認する方法はありますか?
objective-c - NSCell の予期しない動作
NSActionCell
( 内に)のサブクラスを実装していて、NSTableView
異常なことに気付きました。isEditing
ユーザーがセルをクリックしたときにプロパティ ( ) を設定すると、NSCell
その後すぐに解放されるため、そのプロパティの値は失われます。コピーを正しく処理していないためにこれが発生していると想定したため、 を追加しましcopyWithZone
た。今、私はcopyWithZone
呼ばれているのを見ています - しかし、それは予期しないインスタンスで呼び出されています - そしてそのインスタンスのプロパティはNO
- デフォルト値です。が呼び出されるたびcopyWithZone
に、この同じインスタンスで呼び出されます。
誰でもこの動作に光を当てることができますか? 問題のサブクラスと、取得している出力を添付しています。ユーザーが別のセルをクリックしたときにセルのプロパティを保持するには、正確に何をする必要がありますか?
出力 (ユーザーがセルをクリックすると生成される):
そして別のクリック(別のセルで):
macos - NSCellのタイトルは、要求されるまで更新されません
ユーザーがテキストを挿入しているときに自動的にサイズを変更するカスタムの「NSTextField」を実装しようとしています。
これは十分に単純なタスクであり、これが私が使用しているコードです。
どちらが仕事をしますか。NSTextField
好奇心は、のセルタイトルを呼び出す行にコメントすると
動作を停止します。セルは要求されるまでタイトルを更新しないようです。もちろん、セルのタイトルが変更されない場合、ユーザーがテキストを入力したときにテキストフィールドのサイズを変更することはできません。
この動作は機能ですか、それともバグですか?
私が言ったように、上記のコードは仕事をするので、これはもっと好奇心です。唯一の煩わしさは、回線が警告を生成することです。これを行うためのより良い方法があるかどうかを知りたいと思います。
編集:[(NSCell *)self.cell title];
コンパイラへの行を変更すると文句が止まるかどうかを理解したことを気にしないでください。ただし、機能やバグに対する好奇心は依然として残っています。
nstableview - Cocoa: カスタム NSCell がダブルクリック アクションに応答しない
私は 10.6 でサポートされているココア アプリに焦点を当てており、セルベースのNSTableView
.
NSCell
画像とテキストを表示できるようにカスタムします。ここでの問題は次のとおりです。テーブルビューに設定するdoubleClickAction
と、応答しませんでした。
カスタムセルのおかげで、私はすでにそれを見つけました。セルが応答チェーンを停止していると思いますが、それを修正する方法がわかりません。ドキュメントを検索しましたが、どのメソッドをオーバーライドすればよいかわかりません。
いくつかのガイドと感謝をお願いします!