問題タブ [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 - NSSearchField の「フィールドをクリア」動作をオーバーライドする
NSSearchField
「クリア」ボタンでフィールドの内容をクリアしたときに発生するアクションをオーバーライドする必要があります。
デフォルトの起動セレクターは private:_searchFieldCancel
です。
[アップデート]
OK、解決策を見つけました。
しかし、「クリア」ボタンをクリックしたときにsearchFieldがファーストレスポンダーを辞任するのを防ぐにはどうすればよいですか?
objective-c - NSString drawInRect:withAttributes:'認識されないセレクターがインスタンスに送信されます...'
私は本当に奇妙な何かを得ました:メソッドは原因unrecognized selector sent to instance
になりますが、何もしませんNSLog()
。
カスタムNSControlサブクラスを作成しました。ここで、次のようにカスタムセルを描画しようとします。
そして-[MKMenuCell drawWithFrame:inView:]
:
出力:
ご覧MKMenuCell
のとおり、drawWithFrame:inView:
はと呼ばれます。ただし、そのNSLog()
ステートメントからの出力は表示されません。ここで何が起きてるの?それを解決する方法は?
編集: GDBの出力を見て、初めて何も問題がないことに気づきました。これはそれをさらに奇妙にします。
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:
ですか?
nstableview - cocoa: NSTableView の NSCell のカスタム テキスト
NSCell
のテキストをカスタマイズする際に問題がありますNSTableView
。以下はメインウィンドウです。
ウィンドウには、アイコン、タイトル、進行状況インジケーター、およびメッセージを表示するテーブル ビューがあります。私のコンピューターは 10.6 なので、セルベースのテーブルビューで実装します。カスタム セルは、Apple が提供する ImageAndTextCell に基づいています。メッセージは次のように描画されます。
msg
セルのコピー NSString プロパティです。私は2つの問題に遭遇しました:
1 1 つのセルを選択すると、次のようにメッセージが閉じられます。
選択を解除するだけで、再び表示されます。修正するにはどうすればよいですか?
2 タイトルをカスタマイズする必要があります。ご覧のとおり、各セルには sae または IBM というタイトルが付いています。デリゲートから返される値です。
位置、色、フォントを変更できますか?
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:
たセルに送信することで部分的に応答します。 "
私が何か不足している場合は親切に教えてください-私はたくさんグーグルで調べましたが、何も役に立ちませんでした。
macos - NSOutlineView、展開および折りたたみにより、セルがコンテンツをクリップする可能性があります
ビューベースの NSOutlineView のグループを急速に展開したり折りたたんだりするときに、奇妙な視覚的アーティファクトが発生します。グループが展開されている場合、展開矢印をダブルクリック (折りたたんですぐに展開) すると、コンテンツが切り取られます。私のセルには単純な画像と画像の右側のラベルが含まれており、急速に拡大すると、テキストフィールドがクリップされる場合があり、他の場合には押しつぶされます。 -拡大。cellView、outlineRowView、列の自動サイズ変更マスクを変更しましたが、動作を変更する組み合わせはないようです。
誰かが同様の奇妙な行動に出くわしましたか?
objective-c - NSTableView が NSView ではなく NSCell を使用するのはなぜですか?
これは、実際の質問ではなく、一般的な議論である可能性があります。私が NSTableView と NSOutlineView を使い始めたとき、私は考えました:ああ、NSView のインスタンスはほとんどすべてを行うことができます。したがって、delegate と dataSource で NSView インスタンスを返します。
もちろんうまくいきませんでしたが、NSTableView は NSObject から直接継承する NSCell のインスタンスで構成されていることに気付きました。
Cocoa がなぜ NSCell に基づいて NSTableView を構築したのに NSView を構築したのかを理解することが重要であると感じました。しかし、それを明確に説明している文書はほとんどありません。したがって、私は Stackoverflow に目を向けます。誰かそれを知っていますか?よろしくお願いします!
cocoa - NSTextFieldCell で Keydown アクションをインターセプトする
NSOutlineView
オブジェクトを表示するセルベースがありますNSTextFieldCell
。
テキストに特定のプリセット キーワードが含まれている場合に、NSTextFieldCell に含まれるテキストを太字にするために、keydown または keyup イベントに応答したいと思います。これを達成するための最もエレガントな方法は何ですか?
- NSOutlineView をサブクラス化し、keydown メソッドをオーバーライドする
- サブクラス NSTextFieldCell
- 何らかのデリゲートを利用する
- 他のアプローチを利用する
情報をお寄せいただきありがとうございます。