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

cocoa - NSSearchField の「フィールドをクリア」動作をオーバーライドする

NSSearchField「クリア」ボタンでフィールドの内容をクリアしたときに発生するアクションをオーバーライドする必要があります。

デフォルトの起動セレクターは private:_searchFieldCancelです。

[アップデート]

OK、解決策を見つけました。

しかし、「クリア」ボタンをクリックしたときにsearchFieldがファーストレスポンダーを辞任するのを防ぐにはどうすればよいですか?

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

objective-c - NSString drawInRect:withAttributes:'認識されないセレクターがインスタンスに送信されます...'

私は本当に奇妙な何かを得ました:メソッドは原因unrecognized selector sent to instanceになりますが、何もしませんNSLog()

カスタムNSControlサブクラスを作成しました。ここで、次のようにカスタムセルを描画しようとします。

そして-[MKMenuCell drawWithFrame:inView:]

出力:

ご覧MKMenuCellのとおり、drawWithFrame:inView:はと呼ばれます。ただし、そのNSLog()ステートメントからの出力は表示されません。ここで何が起きてるの?それを解決する方法は?

編集: GDBの出力を見て、初めて何も問題がないことに気づきました。これはそれをさらに奇妙にします。

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

objective-c - NSCell でどのメソッドを呼び出す必要がありますか

カスタム NSCells を使用してカスタム NSControl を作成しています。これはコントロールなので、マウスに応答する必要があります。私は自分のコントロール上に NSTrackingArea を作成し、-mouseEntered:-mouseExited:を実装し-mouseMoved:ました。(そして-mouseUp/Down:、 を実装する必要がありますが、そこで何をすべきかわかりません。そのため、今のところ、これらのメソッドをまだオーバーライドしていません。) これらのメソッドでは、マウスが現在どのセルにあるかをうまく判断できます。今、私は2つの質問があります:

  • これはマウスを追跡するための良いアプローチですか? そうでない場合、代わりに何をすべきですか?
  • マウスがセルに入ったとき、マウスがセルを離れたときなど、マウス クリック時に NSCell でどのメソッドを呼び出す必要がありますか? Apple のドキュメントは、これについてあまり明確ではありません。

つまり、基本的には、NSCell でマウス イベントに応答させるには、いつどのメソッドを呼び出せばよいのでしょうか?

編集:
ドキュメントを読み直して、 NSCell-trackMouse:inRect:ofView:untilMouseUp:と override -startTrackingAt:inView:-continueTracking:at:inView:およびを呼び出す必要があると思います-stopTracking:at:inView:mouseIsUp:。ここでも 2 つの質問があります。1) ドキュメントは、マウスが押されたときにのみ呼び出されるという印象を与えます。あれは正しいですか?では、代わりに何をすべきですか?2) どこで、いつ NSCell に電話すればよい-trackMouse:inRect:ofView:untilMouseUp:ですか?

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

nstableview - cocoa: NSTableView の NSCell のカスタム テキスト

NSCellのテキストをカスタマイズする際に問題がありますNSTableView。以下はメインウィンドウです。 ここに画像の説明を入力

ウィンドウには、アイコン、タイトル、進行状況インジケーター、およびメッセージを表示するテーブル ビューがあります。私のコンピューターは 10.6 なので、セルベースのテーブルビューで実装します。カスタム セルは、Apple が提供する ImageAndTextCell に基づいています。メッセージは次のように描画されます。

msgセルのコピー NSString プロパティです。私は2つの問題に遭遇しました:

1 1 つのセルを選択すると、次のようにメッセージが閉じられます。 ここに画像の説明を入力

選択を解除するだけで、再び表示されます。修正するにはどうすればよいですか?

2 タイトルをカスタマイズする必要があります。ご覧のとおり、各セルには sae または IBM というタイトルが付いています。デリゲートから返される値です。

位置、色、フォントを変更できますか?

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

objective-c - -(BOOL)trackMouse:inRect:ofView:untilMouseUp: 呼び出されない

NSControl をサブクラス化してカスタム コントロールを取得し、NSCell をサブクラス化してカスタム セルを取得し、カスタム セルでオーバーライドさ-(BOOL)trackMouse:inRect:ofView:untilMouseUpれたメソッドと必要なメソッドをオーバーライドし、customControl でオーバーライド+ (Class)cellClassして customCell を返しました。

セルはコントロールで正常に描画され、有効に設定され、無効に設定されても正常に動作しますが、マウス イベントがトリガーされません。-(BOOL)trackMouse:inRect:ofView:untilMouseUp: デバッグ中に、呼び出されないことに気付きました。「コントロールとセルのプログラミングガイド」に従って -

「コントロールはセルの動作を管理します。NSView から継承することにより、コントロールはユーザー アクションに応答し、画面上の表現をレンダリングする機能を引き出します。ユーザーがコントロールをクリックすると、クリックされtrackMouse:inRect:ofView:untilMouseUp:たセルに送信することで部分的に応答します。 "

私が何か不足している場合は親切に教えてください-私はたくさんグーグルで調べましたが、何も役に立ちませんでした。

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

macos - NSOutlineView、展開および折りたたみにより、セルがコンテンツをクリップする可能性があります

ビューベースの NSOutlineView のグループを急速に展開したり折りたたんだりするときに、奇妙な視覚的アーティファクトが発生します。グループが展開されている場合、展開矢印をダブルクリック (折りたたんですぐに展開) すると、コンテンツが切り取られます。私のセルには単純な画像と画像の右側のラベルが含まれており、急速に拡大すると、テキストフィールドがクリップされる場合があり、他の場合には押しつぶされます。 -拡大。cellView、outlineRowView、列の自動サイズ変更マスクを変更しましたが、動作を変更する組み合わせはないようです。

誰かが同様の奇妙な行動に出くわしましたか?

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

objective-c - NSTableView が NSView ではなく NSCell を使用するのはなぜですか?

これは、実際の質問ではなく、一般的な議論である可能性があります。私が NSTableView と NSOutlineView を使い始めたとき、私は考えました:ああ、NSView のインスタンスはほとんどすべてを行うことができます。したがって、delegate と dataSource で NSView インスタンスを返します。

もちろんうまくいきませんでしたが、NSTableView は NSObject から直接継承する NSCell のインスタンスで構成されていることに気付きました。

Cocoa がなぜ NSCell に基づいて NSTableView を構築したのに NSView を構築したのかを理解することが重要であると感じました。しかし、それを明確に説明している文書はほとんどありません。したがって、私は Stackoverflow に目を向けます。誰かそれを知っていますか?よろしくお願いします!

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

cocoa - NSTextFieldCell で Keydown アクションをインターセプトする

NSOutlineViewオブジェクトを表示するセルベースがありますNSTextFieldCell

テキストに特定のプリセット キーワードが含まれている場合に、NSTextFieldCell に含まれるテキストを太字にするために、keydown または keyup イベントに応答したいと思います。これを達成するための最もエレガントな方法は何ですか?

  • NSOutlineView をサブクラス化し、keydown メソッドをオーバーライドする
  • サブクラス NSTextFieldCell
  • 何らかのデリゲートを利用する
  • 他のアプローチを利用する

情報をお寄せいただきありがとうございます。