問題タブ [nscontrol]

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

macos - NSWindow を閉じた後に UI 要素が応答しない

先週、私は次の問題をいじるのにかなりの時間を費やしました。私はそれを解決しましたが、ここで答えが見つからなかったので、これに遭遇した人のために私の解決策を共有したいと思います.


問題:アプリケーションがバックグラウンド (メニューバー) で実行され、そのメインNSWindowにアプリケーションのすべての設定が含まれています。NSWindow左上の閉じるボタンをクリックして閉じます。を閉じてNSWindow再度開いた後、すべてNSControlの が視覚的に反応しませんでした。アクションはそれに応じて機能しましたが、更新されていません。

私は次のことを試しました:

  • IB の「クローズ時にリリース」のチェックを外しますNSWindow
  • NSWindowNIB からのリロード
  • NSControlすべての の強力な参照
  • sで「Become First Responder」を呼び出すNSControl
  • NSViewすべての親子関係をリロードしています
  • それぞれを接続するすべてのデリゲートをNSControl実装NSControlする
  • を無効にしてから再度有効にNSControlする

記録のために、以下に私の解決策を投稿します。

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

cocoa - NSTextField コントロールのペアを調整する

値を互いに同期させる必要がある 2 つの NSTextField コントロールを含むウィンドウがあります。具体的には、1 つは幅で、もう 1 つは長さであり、それらの比率は特定の縦横比に等しくなる必要があります。ユーザーが好きな方を設定し、もう一方を自動的に更新できるようにしたいと考えています。

私の最初のアプローチ: 2 つのコントロールのそれぞれのデリゲートをウィンドウ コントローラーに設定します。controlTextDidEndEditing メソッドを実装しました。差出人を確認します。幅フィールドの場合は、高さフィールドを計算し、バインドされたプロパティ (self.my_height = self.my_width/aspectRatio) を介してその値を更新しました。同様に、高さフィールドの場合、(self.my_width = self.my_height*aspectRatio)。

しかし、私は思わぬ障害にぶつかりました。アスペクト比が 1.5 であると仮定します。ユーザーは幅フィールドに 100 を入力し、別のフィールドに移動します。高さフィールドは 66 に更新されます (良くも悪くも、常に切り捨てを選択しました)。ユーザーは高さフィールドをクリックし、何も変更せず、他の場所をクリックします。幅フィールドは 99 に更新されます。ユーザーは頭を掻いています。

私の洗練。また、ウィンドウ コントローラーに controlTextDidChange メソッドを実装しました。これは、静的 (ファイル スコープ) BOOL 変数 (gTextFieldDidChange) を YES に設定するだけです。ここで、controlTextDidEndEditing に入ると、gTextFieldDidChange の状態を確認します。いいえの場合は、すぐに戻ります。YES の場合、gTextFieldDidChange をクリアして NO に戻し、長さ/幅の更新を処理します。

これは私にとっては問題なく機能しているようですが、むしろ「裏口」のようです。私が見逃しているよりクリーンでスマートなアプローチはありますか?

あらゆる/すべての提案に感謝します。マイク

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

macos - NSTextField ドラッグ値

ユーザーが数値を選択し、水平方向にドラッグしてその数値を上下に調整できるテキスト フィールドを Mac OSX 環境で作成しようとしています。Apple がスプライト キット エミッタ セクションのインスペクタ パネルに実装しているため、これが可能であることはわかっています。画像を参照してください。ここに画像の説明を入力

NSTextField をサブクラス化してマウス ドラッグ イベントをキャプチャし、計算を試みましたが、パススルーされないようです。ただし、マウスダウンイベントは...

また、上部にダミーのビューを配置して、発生したイベントをキャッチしようとしました。これはマウスダウンで機能しますが、ドラッグされたマウスが呼び出されることはありません。ただし、ビューがマウスドラッグイベントを受け取ることができることはわかっています。そのビューをテキストフィールドがその下にない場所に配置すると、すべて正常に機能するからです。

ここでのオプションは何ですか? 私はすべてを試したと思いますが、残っている唯一のオプションは、新しいコントロールを最初から作成することです。あまり気にしませんが、ユーザーがテキストフィールドに方程式を追加して個々の値をドラッグできるようにしたいと考えています。つまり、このドラッグ機能を追加するためだけに NSTextField の完全な機能を再構築する必要があります.. 。 他に何かありますか???

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

cocoa - タイトルのないウィンドウですべてのコントロールが無効になっている

私のアプリでは、メソッドの .xib から作成されたセカンダリがNSWindowあります。ウィンドウは、タイトル バーがオフになっているプレーンです。NSWindowControllerinitWithWindowNibName:NSWindow

makeKeyAndOrderFront:-を使用して表示されるウィンドウを作成する
と、すべてのコントロールが無効になります (テキスト フィールド、コンボ ボックス)。

ウィンドウ内のすべてのフラグとコントロールのビュー階層を(以上..)トリプル チェックしました。

まったく無知。何か案は?

更新 #1:
この問題は、ウィンドウにタイトル バーがないことに関連しているようです。ウィンドウでタイトル バーが切り替えられると、ウィンドウ内のコントロールが期待どおりに動作します。

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

objective-c - Objective-C で強調表示されたテキストを取得する

カーソルで選択されたテキスト (アプリケーションの外側) の StringValue を取得しようとしています。NSControl クラスをチェックしようとしましたが、有用なものは見つかりませんでした。