問題タブ [nsmenuitem]
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 - 各ウィンドウから環境設定を開くことができないのはなぜですか?
メイン ウィンドウを表示するこの Cocoa アプリケーション (ソース コード) を見つけました。
このウィンドウがキーである限り、Command-キーを押すだけでなく、メイン メニューから[設定] ウィンドウを開くことができますが、メイン ウィンドウがキーではなく、同じアプリの別のウィンドウがキーである場合、NSMenuItem はグレー表示され、キーボード ショートカットが応答しません。
メイン メニューに関連付けられている xib ファイルを調べたところ、openPreferences:(id)sender
NSMenuItem が NSApplication である必要がある FirstResponder に IBAction を送信しています。
何が欠けていますか (私はまだ mac cocoa プログラミングの初心者です)? 各アプリケーション ウィンドウから設定に到達できるようにするにはどうすれば修正できますか?
cocoa - 無効化された NSMenuItem
プログラムで NSMenuItem を作成しましたが、無効になっています。validateMenuItem: メソッドをオーバーライドして、すべての項目に対して YES を返すと、メニュー項目は正常に機能します。
メニューに autoEnableItems を指示し、validateMenuItem: メソッドをオーバーライドしないと有効にならないのはなぜですか?
objective-c - NSMenuItem カスタム ビューの上のギャップ
setView:
メソッドを使用してNSMenuItem
、カスタム ビューを設定しています。このカスタム ビューには、ビュー全体を占める画像があります。このNSMenuItem
カスタム ビューはメニューの最初にありますが、問題は、メニューの上部と同じ高さに収まらないことです。次の図に示すように、大きなギャップがあります。
なぜこれが起こっているのですか、どうすればそれを止めることができますか?
編集
私は今このコードを使用していますが、私はEXC_BAD_ACCESS
行に乗っていますInstallControlEventHandler
。
また、metrics.top = 0
これは上部のギャップを削除する必要がある行であることに注意してください。しかし、私はそれをそこまで機能させることはできません。なぜ私がEXC_BAD_ACCESS
そこにいるのか知っている人はいますか. 私はすでに作成して割り当てstatusMenu
ているので、確実に機能するはずですか?
objective-c - NSMenuItemsの消失に関する問題
特定のビューがロードされたときに一部のメニューを無効にする必要があるため、InterfaceBuilderでアプリのメインメニューの「メニュー項目を自動有効にする」を無効にしました。しかし、私は問題にぶつかっています。アプリケーションが別のアプリケーション(Safariなど)と通信するたびに、すべてのメニューが無効になり、アプリケーションを強制終了して再起動する必要があります。これを引き起こす原因は何ですか?
objective-c - NSMenuItem 内で NSProgressIndicator を使用する
ステータスバーメニュー内で NSProgressIndicator (不確定) を使用しようとしています。menuitem のビューとして NSView オブジェクトを使用し、進行状況インジケーターをサブビューして表示します。しかし、進行状況のために startAnimation: を呼び出そうとするたびに、何も起こりません。通常の NSWindow でまったく同じことを実行しようとすると、完全に機能しますが、メニュー項目内では機能しません。
私はココアとobjective-cの両方に慣れていないので、「明らかな」ものを見落としている可能性がありますが、回避策をかなり探しましたが、成功しませんでした。メニュー項目が表示されている間は更新できず、代わりにボーダーレス ウィンドウを使用する必要があることがわかりました。しかし、私はこれをどのドキュメントでも確認できませんでした。
編集:
わかりました、ほとんど動作します。setUsesThreadedAnimation: を使用し、MenuDelegate の menuWillOpen から新しいスレッドを作成する場合。このスレッドは、ローカル メソッドを実行します。
これにより、メニューを開くときに進行状況インジケーターがランダム (?) ベースで開始されます。startAnimation:
通過せずにdoWork:
(まだ新しいスレッドを使用して)直接呼び出すと、機能しません。setUsesThreadedAnimation:
プログレスバーにアニメーション用の独自のスレッドを作成させませんか?
objective-c - MenuController の NSMenuItem 状態を AppController から変更しますか?
私のコードは、MenuController.m と AppController.m の 2 つの主要な実装に分割され、それぞれにヘッダー ファイルがあります。
NSUserDefaults を使用して保存され、NSMenuItems を介して変更されたユーザー設定がいくつかあり、有効にするとチェック マークが表示されます ( setState: NSOffStateを使用)。設定に欠けている部分が 1 つだけあります。設定でオプションがオンになっている場合、起動時にこれらのメニュー項目のsetStateをアプリに設定する必要があります。ただし、アプリの起動時に何かを設定する唯一の方法は、それをawakeFromNibメソッドに含めることです。これは AppController にあり、MenuController でインスタンス化されたNSMenuItemにアクセスできません。
私はObjective-Cを初めて使用し、このサイトの多くの役立つチュートリアルと回答のおかげでここまでたどり着きましたが、今は困惑しています.
クラスとオブジェクトのメソッドを使用して設定を変更しようとしましたが、失敗しました。NSMenuItems の既存のインスタンスを使用する必要があります。 validateMenuItemは有望に見えましたが、メニューを有効または無効にするだけで、setState は行いません。
関連コード(私は思う):
MenuController.h から:
MenuController.m から: (prefs と setState を変更する方法 - うまくいきます)
AppController.m から: (動作しませんが、これが要点です)
助けてくれてありがとう!
cocoa - 複数の引数を持つ@selector
最初の私のコード:
セレクターを使っitem
てメソッドの引数として与えたいと思います。press:
どうもありがとうございます :)
PS:私はiPhoneではなくMacでこれを行っています。
objective-c - NSMenu->サブメニューの追加->選択イベントの受信
テーブルの選択した行のメニューを作成する必要があります。オーバーライドして作成できます
テーブルの方法、この特定のメニューには2つのサブメニューがあり、サブメニューを作成できますが、次の問題に直面しています
1-MenuItemにサブメニューを追加するには、別のクラス/インターフェイスからサブメニューを取得する必要があります。次のメソッドを呼び出しています
この関数のプロトタイプは次のとおりです。
以下のように実装します。
このサブメニューで画像、文字列を見ることができますが、私が直面している問題は、このメニューがまったく有効になっていないことです。
この関数はメニューを返し、メニューを以下のように追加します。
前もって感謝します :)
cocoa - 選択後にカスタムNSMenuItemビューをフラッシュするにはどうすればよいですか?
NSMenuItemにビューを割り当てて、カスタム描画を行う必要があります。基本的に、現在選択されているメニュー項目の横に小さな削除ボタンを追加しています。ただし、カスタムメニュー項目は、他のすべての点で通常のメニュー項目のように見え、動作するようにしたいと思います。ドキュメントによると:
ビューのあるメニュー項目は、そのタイトル、状態、フォント、またはその他の標準の描画属性を描画せず、描画の責任をビューに完全に割り当てます。
さて、状態列と選択勾配の外観を複製する必要がありましたが、それほど難しくはありませんでした。私が問題を抱えているのは、メニュー項目が選択された後の「点滅」または「点滅」の方法です。NSTimerを使用してこの小さなアニメーションを模倣しようとしていますが、気分が悪くなります。何回点滅しますか?どの時間間隔を使用する必要がありますか?私はたくさんの実験をしました、そしてそれはただ強打から感じます。
誰かが以前にこれを行ったことがありますか、またはメニュー項目にボタンを追加する方法について他の提案がありますか?たぶん、カスタムココアの描画のためだけにスタック交換サイトがあるはずです...
objective-c - メニュー項目は有効になっていますが、グレー表示されています
InterfaceBuilderで作成されたいくつかのアイテムを含むメニューがあります。そこでは問題ないように見え、「有効」がチェックされています。しかし、アプリケーションを実行すると、すべてのメニュー項目がグレー表示されます。
チェックisEnabled
しましたが、trueを返します。
また、プログラムで(Interface Builderの有無にかかわらず)作成されたメニュー項目はinitWithTitle
問題なく機能します。
ここで何かが足りませんか?私はOSXの開発にまったく慣れていません。