問題タブ [nsview]

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 投票する
3 に答える
1553 参照

objective-c - NSWindow を薄暗くし、NSView を上に重ねる

NSWindow を薄暗くして (基本的に、クリックできない黒い透明なレイヤーをその上に置く)、その上にカスタム NSView を重ねる方法はありますか?

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

objective-c - NSViewサブクラスでのマウスクリックイベント

OpenGLコンテキストで初期化され、多数のマウスイベント処理(onMouseDownなど)を持つNSViewサブクラスがあります。ビューを含むメインCocoaウィンドウがあり、すべてのマウスイベントが正しく機能しているアプリを使用しています。

しかし、私は今、別のアプリでそれを使用しようとしています。そこでは、ポップアップしてビューで初期化されるセカンダリウィンドウがあり、マウスを動かしたevetsを取得している間、マウスクリック(またはその問題)イベントは何でも。

ビューをクリックしてドラッグすると、ウィンドウ全体が移動します。これは、マウスイベントが発生しない理由を推測する必要があります。私はacceptsFirstResponderとacceptsFirstMouseがYESを返し、hitTestが自分自身を適切に返すようにしています。

何が悪いのか、何か考えはありますか?

0 投票する
3 に答える
2040 参照

objective-c - ビュー コントローラーでファーストレスポンダーへのメッセージを処理する

単純なものが欠けているに違いありませんが、見えません。まず、セットアップ:

  • DATreeView、のサブクラスNSView
  • DATreeViewController、のサブクラスNSViewController
  • MainMenu.xibDATreeViewControllerからビューをロードするように構成された のインスタンスがありますDATreeView.xib
  • MainMenu.xibのインスタンスもありDendreaAppDelegate、アウトレットがあります (のインスタンスDATreeViewControllerに配線されています) 。MainMenu.xibDATreeViewController
  • Do Something!doSomething:、ファーストレスポンダにメッセージを送信するために接続されたメニュー項目です。
  • 偶然でDATreeViewControllerはなく、 というアクションがありdoSomething:ます。

私が望むのは、Do Something!メニュー項目が でdoSomething:アクションをトリガーするDATreeViewControllerことです。ターゲット/アクション接続を直接設定することはできないふりをしましょう。ここで立ち止まって質問します。私の設計は完全に間違っていますか? 私がやろうとしていることは、私の神の目に愚か/悪/恥をかかせる可能性がありますか?

いいえ?偉大な。さて、私の人生では、メニュー項目をアクティブにすることはできません。違いがある場合は、Snow Leopardでこれを行っています。

NSViewとの間の適切な統合を実現するためにNSViewController、たとえばレスポンダー チェーンの管理など、 Matt Gallagher の例に従いましたが、実質的な変更が 1 つNSViewありsetViewController:ます。DATreeViewControllerloadViewメッセージ。私が知る限り、次のコードを実行した後applicationDidFinishLaunching:

レスポンダー チェーンは期待どおりに設定されます。つまり、次のようになります。

レスポンダ チェーンの一部でDATreeViewControllerあり、 に応答しdoSomething:、検証を実装していないため、Interface Builder を使用してDo Something!メニュー項目を First Responder プロキシに接続するだけでよいと思っていました。をdoSomething:アクションとして使用すると、メニュー項目が自動的にアクティブになります。

私は何を間違っていますか?かけがえのない支援をありがとうございました!

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

cocoa - NSScroller を大きくする

外部のタッチ センシティブ スクリーン用に最適化された Cocoa アプリケーションを作成しているので、NSScrollView に大きなスクロールバーを作成したいと考えています。スクローラーフレームのサイズを変更しようとしましたが、描画とマウスイベントの両方がスクロール領域でのみ発生し、幅が広くなりません(垂直スクローラーです)。これは私が使用しているコードです (サブクラス化された NSScrollView から):

NSScroller をサブクラス化しようとしましたが、それを拡張する方法がわかりません。

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

cocoa - なぜbitmapImageRepForCachingDisplayInRect:空の画像を作成するのですか?

ビューのビットマップをキャプチャすることになっている非常に単純なコードがあります。これは以前はLeopardで機能していましたが、SnowLeopardではひどく壊れているようです。

ウィンドウのボタンを押すと応答するコードは次のとおりです。

ボタンをクリックしてスナップショットを撮ると、完全に透明な画像になります。

私はここで完全に無知ですか、それともこのビットマップキャッシング方法は壊れていますか?

単純なプロジェクト(基本的には、このコードを呼び出すボタンを備えたスターターNSDocumentプロジェクト)は、ここにあります。

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

objective-c - NSCollectionViewItem のビューのサイズを変更します

NSCollectionViewItem のビューのサイズをプログラムで設定するにはどうすればよいですか?

私は NSCollectionView サブクラスでこれをやってみました:

ただし、このコードは効果がありません。NSCollectionViewItem に使用する NSView をサブクラス化し、setFrame: を initWithCoder メソッドに追加しようとしましたが、そうすると EXC BAD ACCESS クラッシュが発生します。

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

objective-c - NSWindow のコンテンツをグレー表示する

NSWindowwith 2 NSViews(NSSplitViewとカスタムNSView)があります。これらのビューに入力するデータにアクセスするには、時間がかかる場合があります。この期間中、これらのビューのコンテンツをグレーアウトしたいと思います。

私の最初のアプローチは、他の 2 つを覆う黒い 3 分NSViewの 1 を作成し、アルファ値を変更することでグレーアウト効果を実現することでした。ただし、兄弟ビューを持つ階層を持つことは定義されていないことを学びました。

ここで最善のアプローチは何ですか?

  • 2 つのビューをキャッシュNSBitmapImageRepし、キャッシュされた画像を背景として使用して 3 番目のビューに置き換えます。
  • 各ビューのアルファ値を個別に設定します(グレー効果のために黒い背景を取得する方法はまだよくわかりません)
  • 考慮していないこと
0 投票する
5 に答える
9664 参照

cocoa - Mac 上の Cocoa でシングル クリックとダブル クリックを区別する

私には習慣がありますNSView(それは多くの習慣の1つであり、それらはすべて内部に住んでNSCollectionViewいます—それは関係ないと思いますが、誰にもわかりません)。ビューをクリックすると、選択状態が変更されます (それに応じて再描画されます)。ビューをダブルクリックすると、ダブルクリックしたオブジェクトの大きなプレビュー ウィンドウがポップアップ表示されるようにします。

私の最初は次のように見えました:

これはほとんどうまくいきました。ただし、ビューをダブルクリックすると、選択状態が変わりウィンドウがポップアップします。これはまさに私が望むものではありません。

2つのオプションがあるようです。NSTimerダブルクリックに応答するときに選択状態を元に戻す (誤ったシングルクリックを元に戻す) か、シングル クリックに応答する前に遅延を組み込む何らかの解決策を練ることができます。つまり、選択状態を変更する前に、2 回目のクリックが行われないことを確認できます。

これはよりエレガントに思えたので、私が最初に取ったアプローチでした。私が Google から見つけた唯一の実際のガイダンスは、名前にハイフンが含まれる名前のないサイトに関するものでした。このアプローチは、ほとんどの場合、1 つの大きな注意点があります。

未解決の質問は、「どのくらいNSTimer待つ必要がありますか?」です。名前のないサイトでは、Carbon 関数の使用が提案されていますGetDblTime()。64 ビット アプリでは使用できないことを除けば、私が見つけた唯一のドキュメントには、クロック ティックを返すと書かれています。そして、それらを秒に変換する方法がわかりませんNSTimer

では、ここでの「正しい」答えは何ですか? GetDblTime()?をいじります。ダブルクリックで選択を「元に戻す」? ココアの慣用的なアプローチがわかりません。

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

nsview - カスタム ビューを使用したカスタム NSStatusItem - NSWindow、NSView、カスタム NSMenuItem を使用しますか?

Spotlight、CoverSutra、およびそのタイプの他のアプリのように動作する LSUIElement アプリを作成しようとしています。NSWindow をポップアップするカスタム NSStatusItem を作成できましたが、問題は、現在フォーカスがあるアプリがカスタム NSWindow にフォーカスすることです。

私は Matt Gemmell の例 ( http://mattgemmell.com/2008/03/04/using-maattachedwindow-with-an-nsstatusitem )に基づいています。

たとえば、Safari で Spotlight アイコンをクリックすると、現在の Safari ウィンドウはグレー表示されず、フォーカスされたままになります。Spotlight で ESC を押すと、フォーカスが Safari ウィンドウに戻ります。

カスタム NSWindow でこれを行うことができませんでした。ウィンドウにフォーカスを戻すには、ウィンドウをクリックして戻す必要があります。

だから私はこれを達成するためにどのルートに行くべきか知りたいです。ソリューションは、カスタム NSMenuItem を持つ NSWindow、NSPanel、NSMenu ですか?

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

objective-c - NSScrollView 内で NSView を中央に配置する

「プレビュー」のように、NSScrollView 内で NSView を中央に配置するにはどうすればよいですか?