問題タブ [appkit]
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 - NSCollectionViewへのドラッグの検証は視覚的に反映されません
アプリケーションの他の場所からドラッグされたアイテムを受け入れたいNSCollectionViewがあります。
私はコレクションビューのデリゲートに実装collectionView:validateDrop:proposedIndex:dropOperation:
して、適切なドラッグされたタイプに登録します。collectionView:acceptDrop:index:dropOperation:
適切なタイプをドラッグすると、どちらのメソッドも正常に呼び出されますが、コレクションビュー上に有効なドラッグを示す青いフォーカスリングが表示されません。
フォーカスリングのデフォルト設定と外部設定で、コレクションビューとそれに含まれるスクロールビューの両方を試しました。どちらも標準の非派生Cocoaクラスです。他にやってみるべきことがあるかと思いました。確かに、このためにNSCollectionViewをサブクラス化する必要はありませんか?
ありがとう
クリス
macos - 実行全体でのNSCombobox履歴の保存
URL用のNSComboBoxを備えた小さなMacOSユーティリティアプリを書いています。
履歴を永続的にしたいのですが、どこに、いつ、どのようにデータを保存するのかわかりません。
これがiPhoneアプリの場合、アプリが終了するように指示されたときにURLの配列を保持するだけですが、それがMacOSでの最善の方法かどうかはわかりません。
同じことをして、アプリが終了したときに配列をファイルに追加する必要がありますか?または、CFPreferencesを使用する必要がありますか?または、他の何か ?
cocoa - NSScrollView(またはNSClipview)フォーカスリング?
NSScrollViewにカスタムNSViewがあります。NSScrollView(またはおそらくNSClipView)の周りにフォーカスリングを描画しようとしています。これにより、カスタムビューがドラッグドロップホバーを受信すると、スクロールビューにフォーカスが表示されます。一体どうやってこれを行うのですか?NSScrollViewをサブクラス化する必要はありません...そうですか?
cocoa - NSWindowが閉じたときに通知を受け取る方法
NSWindowがいつ閉じられるべきか、または閉じられるかをどのように通知できますか?windowWillCloseのようなものが欲しいのですが。残念ながら、NSWindowControllerには、たとえばUIViewControllerほど便利なメソッドがありません。では、それを行うためのベストプラクティスは何ですか?
ありがとう
–f
objective-c - NSTextViewは、レイヤー上にあるときに赤いスペルミスの下線を表示しません
anがレイヤーバック( )NSTextView
のサブビューである場合、スペルミスのある単語の波状の赤い下線は表示されません。これを再現するために必要なのは、空のCocoaプロジェクトを作成し、ペン先を開き、ウィンドウにドラッグして、ウィンドウのコンテンツビューを切り替えてレイヤーを作成することだけです。ブーム-赤い下線はもうありません。NSView
-wantsLayer == YES
NSTextView
私はいくつかの検索を行いましたが、これは既知の状況のようであり、10.5から当てはまります。しかし、私が見つけられないのは、その回避策です。NSTextView
レイヤーバックビューにあるときに下線をレンダリングする方法はありませんか?
をオーバーライドし、レイアウトマネージャーを使用して、スペルミスを示す適切な一時属性が設定された適切な四角形を見つけて、自分で赤い波線を描くことを想像できますが、それはもちろん完全なハックNSTextView
です。drawRect:
私はまた、Appleが10.7でこれを修正することを想像することができます(おそらく)そして突然私のアプリは二重の下線か何かを持つでしょう。
[更新]私の回避策
私の現在の回避策は、nptacekの言及されたスペルチェックデリゲートメソッドに触発され、以前は気づかなかったパスを深く掘り下げるように促されたので、その答えを受け入れますが、後世のために行ったことを投稿します。討論。
10.6.5を実行しています。NSClipViewのカスタムサブクラスのドキュメントビューであるNSTextViewのサブクラスがあります。これは、レイヤーがオンになっているウィンドウのcontentViewのサブビューです。これで遊んでいると、最終的にすべてのカスタマイズがコメントアウトされましたが、それでもスペルチェックが正しく機能していませんでした。
私は、2つの明確な問題が何であるかを特定しました。
#1は、NSTextViewがレイヤーに裏打ちされたビューでホストされている場合、スペルミスの下線をわざわざ描画することさえないということです。(Googleの検索に基づいて、10.5日間に下線が引かれた時期があったかもしれないが、正しい場所にはなかった可能性があることを収集しました。そのため、Appleは10.6でその問題を回避するために、それらを完全に無効にした可能性があります。わかりません。 。また、私が物を配置する方法などの副作用があり、私の場合はまったく表示されない可能性があります。現在は不明です。)
#2NSTextViewがこのレイヤー関連の状況にある場合、-isContinuousSpellCheckingEnabledがYESに設定されている場合でも、入力中にテキストのスペルが間違っていると正しくマークされていないように見えます。いくつかのスペルチェックデリゲートメソッドを実装し、NSTextViewが変更に関するメッセージを送信するのを見て、テキスト範囲をスペルミスとして設定するように通知することはありませんでした-テキストエディット(および他のテキストビューで赤い下線が表示される明らかにスペルミスの単語がある場合でも)他のアプリで)。また、NSTextViewの-handleTextCheckingResults:forRange:types:options:orthography:wordCount:をオーバーライドして、何が表示されているかを確認しましたが、同じものが表示されました。NSTextViewがカーソルの下の単語をスペルミスがないようにアクティブに設定していて、ユーザーがスペースを入力したり、スペースから離れたりしたときに、そうではなかったようです。tスペルミスがないか再確認します。しかし、私は完全にはわかりません。
さて、#1を回避するために、カスタムNSTextViewサブクラスの-drawRect:をオーバーライドして次のようにします。
次に、-drawFakeSpellingUnderlinesInRect:を実装して、layoutManagerを使用して、一時的な属性としてNSSpellingStateAttributeNameを含むテキスト範囲を取得し、標準のOSXスペルミスのドットパターンにかなり近いドットパターンをレンダリングしました。
したがって、これを行った後、赤い下線が表示されますが、入力してもスペルの状態が更新されないようです。この問題を回避するために、NSTextViewサブクラスに次の邪悪なハックを実装しました。
これは、実際の予想されるOSXの動作とまったく同じようには機能しませんが、かなり近いものであり、今のところ作業は完了しています。うまくいけば、これは他の誰かに役立つか、もっと良いことに、誰かがここに来て、私が信じられないほど単純なものが欠けていると私に言い、それを修正する方法を説明します。:)
cocoa - 「colorWithCalibratedRed:green:blue:alpha:」は機能しません
NSColor を使用して色を作成したいのですが、どの静的コンストラクターも機能していないようです。スクリーンショットは、私が経験している問題を説明しています。
私は参照しています:
そして、フレームワーク「AppKit」をインポートしました。他に何をする必要がありますか?
objective-c - カスタム windowtitle + ツールバー (ala. Mac App Store および Mac 用 Reeder)
Reeder for Mac および Mac App Store (http://www.apple.com/mac/app-store/) に見られるように、ウィンドウ タイトルとツールバーを組み合わせた "新しく人気のある" 結合されたウィンドウ タイトルを作成する方法を見つけようとしています。グーグルを試してみましたが、これはあまり議論されているトピックではないようです!
基本的; それはカスタムビューをずっと備えたボーダレスウィンドウですか? または、Interface Builder で行うことは可能ですか?
objective-c - カスタムビューの最小サイズ
カスタムビュー(NSView)の最小サイズを適用する方法はありますか?ウィンドウでは最小サイズを設定できることは知っていますが、カスタムビューにはそのような設定はありません。
この目的でNSViewをサブクラス化することは可能ですか?
これが必要なのは、次のような構造になっているからです。ここで、分割ビューバーを使用して一番上まで押し、再び下に戻すと、テーブルビューが分割ビューの上部全体に表示され、他のすべてのコンポーネントが非表示になります。上部のカスタムビューの最小サイズを指定できれば、これを防ぐことができます。
ありがとう
objective-c - 同じオプションで複数のメニューの同期を維持するにはどうすればよいですか?
私のアプリケーションは、明らかに、メニューバーにメインメニューがあります。NSPopUpButton
これらのメニュー項目の1つには、アプリの他の場所でも使用できるサブメニューが含まれています。
今まではメニューオプションを(プログラムで)コードで複製してポップアップボタンを作成してきましたが、セレクターの名前やメニュー項目のタイトルなどを変更すると、必然的に同じ変更を忘れてしまいますポップアップボタンで。
メニューを一箇所で定義し、二箇所で使用したいのですが。これは可能ですか?
私はこれを試しました:
残念ながら、これにより次のようなランタイムエラーが発生します。
2010-12-19 02:56:11.571 MojiBaker [85384:a0f] * -[NSMenuItem setSubmenu:]、/ SourceCache / AppKit / AppKit-1038.35 / Menus.subproj / NSMenuItem.m:695でアサーションが失敗しました
objective-c - ビューをクリック アンド ドラッグして、ウィンドウ自体をドラッグできるようにしますか?
タイトル バーのすぐ下、上部にタブ バーがあるテクスチャ ウィンドウを使用しています。
ウィンドウで使用-setContentBorderThickness:forEdge:
して、グラデーションを正しく表示し、シートが正しい位置からスライドするようにしました。
ただし、機能していないのは、ウィンドウをドラッグすることです。実際にはタイトル バーである領域をクリックしてドラッグすると機能しますが、タイトル バーのグラデーションが (潜在的/多くの場合空の) タブ バーに流れ込むため、クリックが低すぎると非常に簡単になり、ドラッグしようとすると非常にイライラします。ウィンドウが動いていないことに気づきます。
NSToolbar
は、タイトル バーの下にほぼ同じ量のスペースを占めていますが、カーソルがその上にあるときにウィンドウをドラッグできることに気付きました。これをどのように実装しますか?
ありがとう。