問題タブ [nsresponder]
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 - NSResponder print: 呼び出し先が間違っています
NSViewController に print(_:) メソッドを配置しましたが、印刷を押しても呼び出されません。代わりに、私がいる現在の NSTextField によって印刷がキャプチャされています。印刷呼び出しを強制的にビュー コントローラーに入れるにはどうすればよいですか? 私はそれを次のように定義しました:
cocoa - NSResponder と複数の NSTableView - 誰がメッセージを送信したか?
1 つの NSViewController に 2 つの NSTableView があり、それぞれに存在するものを処理するための独自の NSArrayController があります。私は今、編集 - >削除ボタンを接続しようとしています。delete メソッドが呼び出されたときに、「誰が」そのメッセージを送信したかを知るにはどうすればよいですか?
具体的には、[削除] メニュー項目を選択したときに、最初のテーブル ビューまたは 2 番目のテーブル ビューをクリックしたかどうかを知りたいです。削除メソッドの「送信者」は単なる NSMenuItem であるため、それをテーブルに戻すことはできません。
swift - Swift 2.2 で NSResponder セレクターを更新する方法
NSControlTextEditingDelegate プロトコルを実装していますが、commandSelector などと一致させる必要があるクラス/プロトコルがわかりません。#selector(WhichClass.moveUp(_:)) 等号が通るようにします。
現在、swift 2.1 ではすべて問題ありません。
swift - NSTextView のテキストに下線を引くことはできますが、太字にすることはできません
Xcode 8 のウィザードで作成された NSDocuments & ストーリーボード アプリがあります。ViewController シーンに NSTextView を追加しました。太字や斜体など、特定のメニュー項目が無効になっています。
First Responder を見ると、太字と斜体のアクションがありません。これらのメソッドを自分で作成する必要がありますか? これは、レスポンダー チェーンが正しく設定されていないためですか? 下線は表示されるのに太字が表示されないのはなぜですか?
編集: インスペクタ バーでテキストを編集する方法を示す画像を追加しましたが、[書式] メニューに期待するコマンドが表示されません。
objective-c - テキスト フィールドとスクロール ビューを含む Cocoa ビューでのタブの処理
私の Cocoa アプリには、NSTextField (そのまま) と NSScrollView (サブクラス) を含むウィンドウがあります。テキスト フィールドとスクロール ビューを含むウィンドウの NSView を管理する NSViewController があります。
アプリの起動時に NSTextField にフォーカスがあり、入力するとそのテキスト ボックスに文字が入力されます。TAB キーを押すと、フォーカスが失われます。しかし、NSScrollView のように、インターフェイスの他のものは何もフォーカスされません。キーダウン イベントがどこに行くのかわかりません。
キーダウンイベントがそれに影響を与えることができるように、NSScrollView にフォーカスを転送するにはどうすればよいですか (たとえば、矢印キー、暗黙の検索など)。
cocoa - 関連するコントローラーでの NSToolbarItem の検証
ビューとして NSButton を持つ NSToolbarItem と、メイン メニューに NSMenuItem があります。どちらも同じアクションを持ち、特定のターゲットではなく、ファーストレスポンダに送信されます。そのメソッドは、最終的に、ウィンドウのコンテンツ ビューのビュー階層のどこかにある NSSplitViewController のサブクラスに実装されます。両方の項目を検証したいのですが、特定の分割ビュー コントローラーに検証を任せます。これは、そのコントローラーに固有のいくつかの条件に依存しているためです。
私はオーバーライドvalidateToolbarItem(_:)
しvalidateMenuItem(_:)
、その分割ビューコントローラーで。メニュー項目については、これは期待どおりに機能しています。メソッドが呼び出され、検証が行われます。validateToolbarItem(_:)
ただし、呼び出されることはありません。
Apple のドキュメントによると、NSToolbar はvalidateToolbarItem(_:)
ビューベースのツールバー項目に送信しません。これをテストするために、ツールバー項目を画像ツールバー項目に置き換えたところ、期待どおりに動作しました。
これに基づいて、いくつかの解決策に出くわしましたが、それらは私が望むものではありません。
NSToolbarItem をサブクラス化し、オーバーライドします
validate()
。ただし、コントローラーvalidateToolbarItem(_:)
を呼び出す方法についてのガイダンスはありません。NSToolbar と override
validateVisibleToolbarItems()
をサブクラス化し、最初の応答者にメッセージを送信します。ここで、ツールバーのレスポンダーチェーンの外側にあるため、スプリットビューコントローラーにメッセージを送信できないという問題に直面しています。上記のように NSToolbar をサブクラス化しますが
validateToolbarItem(_:)
、NSWindowController などのレスポンダー チェーン内にあるコントローラーに実装します。これは機能しますが、メニュー項目に不要なものを処理するために追加のコードを追加する必要があります。
画像ツールバー項目とメニュー項目の場合と同様に機能する、これに対するエレガントなソリューションはありますか?