問題タブ [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.
objective-c - NSSliderCell: カスタム ノブを描画するサブクラス
外観をカスタマイズするには、NSSliderCell をサブクラス化する必要があります。私はバーに問題はありませんでした、私はオーバーロードしました
期待どおりに動作します。
同様に機能しますが、ノブを小さくしたいのですが、NSRect のサイズを変更することはできません。これは、カスタム ノブを中央に配置した場合、右側または左側 (または両方) に不要なスペースがあるためです。
ドキュメントを読んで、オーバーライドする必要があります
ノブを描画する必要がある rect を計算するには、drawKnob を呼び出します。問題は、cellSize を取得してノブを描画する場所を計算しようとすると、ばかげた幅 : 40000 が得られることです。
適切な幅を取得するにはどうすればよいですか? NSSliderCell は NSCell のサブクラスであるため、フレーム/境界にアクセスできません。
cocoa - NSRadioButton のトグルをシミュレートするにはどうすればよいですか?
OS X では、NSButtonCells の行を持つ NSTableView があります。これらは、NSRadioButton タイプのボタンとまったく同じように表示される必要がありますが、より NSSwitchButton のように機能します。特に、状態が NSOnState であり、マウスでクリックした場合、その状態をオフに切り替える必要があります (はい、これはラジオ ボタンの標準的な動作ではないことはわかっていますが、それは私が行う必要があることです)。タイプNSSwitchButtonのボタンセル、動作はまさに私が必要としているものです。つまり、tableView が setObjectValueForTableColumn:row: を呼び出します。ここで、データ モデルを適切に変更できます。ただし、タイプを NSRadioButton に変更すると、セルの状態がオンでクリックされたときに、そのメソッドも他のデリゲート メソッドも呼び出されません。これを行う最も簡単な方法についてのアイデアはありますか?
objective-c - NSButtonCell の状態に興味がある
内部に NSButtonCell (チェックボックス) を持つ NSTableColumn を持つ NSTableView があり、行が追加されるたびに NSButtonCell の新しいインスタンスを生成します。これは IB で構成しました。ただし、次のコードのチャンクで 2 番目の NSLog が 0 を返す理由に興味があります。
0 を返すということは、NSButtonCell のインスタンスにメッセージを送信していることを意味しますよね? では、なぜ setState: は 2 番目の NSLog の戻り値を変更しないのでしょうか?
objective-c - NSCell で反転した NSImage
NSTableView の NSCell で描画された NSImage が反転する理由。そして、その動作をどのように適切に修正しますか。データ ソース メソッドから画像を返します。
私が試した回避策として:
すべて問題ありませんが、ドキュメントによると、非推奨の方法です
OS X 10.7-10.9
cocoa - NSTableHeaderCell はマウスダウンを検出しますか?
NSTableHeaderCell
マウスのクリックを検出するようにカスタマイズしようとしています。過去に、次のようなイベントNSTrackingArea
をオーバーライドしたり、次のようなものを使用したりしました。mouseDown
NSTableHeaderCell
これらのメソッドは、ビューではなくセルとして適切に機能しないようです。
セルでのマウス イベントの検出に関する提案はありますか? 具体的には、最初のクリックを(その場所とともに)キャッチしたいと思います。
nstableview - セルベースの NSTableView でセル編集の開始を検出する
に編集可能なセルがいくつかありNSTableView
ます。
セルをダブルクリックして入力します。ウィンドウに他のボタンがあります。ボタンをクリックすると、セルの編集が終了し、セルに何も表示されず、 を呼び出しても NSTableView が更新されません[myTableView reloadData]
。
考えられる回避策は、セル編集を開始したらすぐにすべてのボタンを無効にすることNSTableView
ですが、これを検出する方法がわかりません。
何かが入力されるとすぐに物事をキャプチャできます:
しかし、これは私が望むものではありません。ユーザーがセルエディターに入力した後にのみ呼び出されるため、遅すぎます。
まだ何も入力されていなくても、セルの編集がいつ開始されるかを正確に検出したい。
考えられる結果を含むいくつかの投稿を見てきました。
最初にウィンドウが firstResponder になるように要求し (したがって、firstReponder をフォーカスされたフィールドから遠ざけます)、それが失敗した場合は、NSWindow の粗雑な「endEditingFor:」メソッドに頼るのが最善です。
しかし、これは私にとってギリシャ語です。どんな助けでも大歓迎です。
objective-c - テーブル ビュー セルの修飾キーによるマウス トラッキング
セルベースの NSTableView の列に NSTextFieldCell があります。このセルはクリックを処理する必要があります。修飾キーが押されていない場合、これは正常に機能します。シフト キーまたはコマンド キーを押したままにすると、テーブル ビューは行の選択を処理しようとして mouseDown イベントを飲み込みます。
NSTableView で行選択を完全に無効にする方法はありますか?
NSTableView にすべてのイベントを通過させる方法はありますか?
私のセル サブクラスは、TableViewLinks サンプル コードの LinkTextFieldCell から派生しています。以下を実装します。
行を選択したくないので、テーブル ビュー デリゲートは次のように実装します。
私のデリゲート メソッドは -[NSTableView mouseDown:] から呼び出されます。マウス トラッキング コードは、修飾キーが押されていないときに呼び出されます。
NSTableView をサブクラス化して -[NSTableView mouseDown:] をオーバーライドするよりも、これを修正するより良い方法はありますか?