2012-04-01 13 views
0

私は、カップルのボタン、ラベル、およびユーザーが入力できるテキストフィールドを持つHUD Panelを持っています。 タイトルバーを取り除きたい場合を除いて、今は完璧に機能します。 インタフェースビルダーの「タイトルバー」のチェックを外すことができるので、タイトルバーを削除するのは本当に簡単です。問題は、タイトルバーを取り除くと編集不能になるため、ユーザーはテキストフィールドに何も入力できないということです。 これはなぜですか、どのように修正できますか?目的C、HUDパネル?

プログラムでカスタムウィンドウを書くことができますが、実際にはタイトルバーを削除するだけで済むので、ビルダーで既に設定済みのものがすべてあるので、この問題を解決する簡単な方法を探したかったのです、もしあれば(うまくいけば)。

ありがとうございます。

答えて

1

あなたがやらなければならないことは、次のとおりです。

サブクラスあなたNSPanelとrdelmarが述べたようにcanBecomeKeyWindowをオーバーライドします。

あなたはこのようにそれを行うことができます。

作成パネルクラス:

の.h

@interface panel : NSPanel { 

} 

@end 

.M

#import "panel.h" 

@implementation panel 

-(BOOL)canBecomeKeyWindow 
{ 
    return YES; 
} 

@end 

に忘れてはいけませんパネルのクラスを変更するあなたの作成したクラスアイデンティティインスペクタ

enter image description here

+0

答えをありがとうが、私はちょうど同様に他のいくつかの問題があったので、プログラムでカスタムウィンドウを作成してしまった。ありがとう、結構です。 – Dennis

1

canBecomeKeyWindowをオーバーライドしてYESを返す必要があります。

docsから:NSWindow実装は、ウィンドウにタイトルバーまたはサイズバーがある場合はYESを返し、そうでない場合はNOを返します。

+0

http://stackoverflow.com/questions/5013695/how-do-i-create-a-custom-borderless-nswindow-in-で説明したように、私は(同様canBecomeKeyWindowや他のものを試してみましたobjective-c-cocoa)、それでも動作しません。それはウィンドウの代わりにパネルなのかもしれないのでしょうか? – Dennis

+0

@Dennis、そうではありません。私はそれをパネルで作った。私はちょうどNSPanelをサブクラス化し、その1つのメソッドを追加しました: - (BOOL)canBecomeKeyWindow {return YES;} – rdelmar

+0

ええ..パネルやものをサブクラス化するのは混乱しましたが、今度は、他のものも設定するのが簡単になります。とにかくありがとう:) – Dennis