2011-03-01 10 views
3

私はSpotlightと同様に、編集可能なNSTextFieldを含むサブクラスのNSViewを持っています。NSMenuItemのカスタムビューで編集可能なNSTextField

テキストフィールドを選択して強調表示するのが非常に困難です。テキストフィールドの編集領域をすばやくすばやくクリックすると、実際にテキストを入力できますが、あまり重要でないアプリのフィールドにテキストを追加しているかのように、灰色で表示されます。

viewDidMoveToWindowを使用してViewウィンドウのフォーカスを取得しようとしましたが、明らかにNSMenuItemのウィンドウはキーをうまく扱えないカーボンウィンドウです。

短い話ですが、この作業を成功させるにはどうすればよいでしょうか? Spotlightは境界線のないウィンドウですが、それは私の目的には適していません。

すべての提案は非常に役に立ちます。

答えて

1

、二つのことは、共通のコンセンサスです:あなたが見つけた場合

(1)自分は特別なチャンスはあなたがしているということであるため、組み込みのUI要素をサブクラス化する方法を探して何か間違っている、または少なくとも、あなたがやろうとしていることをやるよりよい方法があります。

(2)インターフェイスのガイドラインに従う理由は、将来の互換性が増すためです。サブクラス化されたUI要素が将来のバージョンのOSと互換性があるという保証はありません。

ブラスタック - UI要素のサブクラス化は一般的に推奨されていません。

+2

これでどのように問題を解決しましたか?あなたは明らかにAppleが推奨していないことをしていませんでした。私は現時点で理解しているように、単にSpotlightの動作を再現しようとしていました。 NSViewは私の見解ではサブクラス化されている非常に一般的な「UIクラス」です。脈動的なステータスバー項目を作成したい場合や、空港ステータスバー項目でAppleが行うことのようなものを作成する場合はどうでしょうか。 UIクラスをサブクラス化してはいけないという宣言は広すぎ、本当に正当なものではありません。要点は、あなたが望む機能を他にどのように達成したいのですか?どのようにしましたか? –

+0

あなたはどういうことを言っていますか?サブクラス化されたUI要素は、将来のバージョンのOSと互換性がありませんか?それは私が今まで聞いたことのない最も奇妙なことです。 OSのすべてのコントロールは、サブクラス化されたUI要素です!拡張可能なNSViewクラスを追加する理由のすべては、独自のカスタムビューを持つことです。私はDevと同意します。あなたはAppleが推奨していないことをやっていませんでした。実際には、可能であればカスタムビューを作成することを強くお勧めします。 – strange

0

Matt GemmellのMAAttachedWindowをチェックしたいと思うかもしれません。多くの研究の後

http://mattgemmell.com/2007/10/03/maattachedwindow-nswindow-subclass

+1

はい、私はGemmellのソースとサンプルを長年利用しています。素晴らしいリソース。しかし、私が上記のように、私はボーダーレスウィンドウに本当に興味がありません - 私は追加のウィンドウを避けようとしています。私がする必要があれば、ボーダーレスNSWindow内でNSMenuをエミュレートしますが、それは非常に望ましくありません。その非常にハッキーではなく、将来的な証拠ではありません。 –

+0

NSViewとの関係はすべて将来的なものです。私はあなたが問題をはっきりと説明していないか、あなたがしたいことをより明確に描いていないと思います。いずれにしても、100%未来の証であると言っているように、正確に何をしようとしているのかを詳しく教えてください。プライベートAPIに頼っていない限り、それはカスタムコントロールの背後にある全体のアイデアです。 – strange

関連する問題