2012-02-28 6 views

答えて

7

NSButtonのクラス階層を見ると、マウスイベントを処理するクラスであるNSResponderから派生していることがわかります。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/nsbutton_Class/Reference/Reference.html

NSButtonのサブクラスを作成し、あなたが望むものにタイトルを設定するには、次のメッセージをオーバーライドします。

- (void)mouseEntered:(NSEvent *)theEvent 
- (void)mouseExited:(NSEvent *)theEvent 

はに応じて、(自分の初期化するかawakeFromNibまたはあなたのinitメッセージを、これを追加あなたの使用法):

実際にマウスが追跡領域に初めて入ったときでも、タイトルw終了したメッセージを表示しません。最初にトラッキングエリアに入る前に3番目のタイトルセットを設定する場合は、クラスにいくつかの状態を追加することができます。

EDIT:おそらくこれが役立ちます。

#import <Cocoa/Cocoa.h> 

@interface MTButton : NSButton { 
    NSTrackingRectTag myTrackingRectTag; 
} 

@end 

かなり標準のもの:ここで

はヘッダファイル "MyButton.h" です。

は、ここに私のソースファイルです。

#import "myButton.h" 


@implementation MTButton 

- (void) awakeFromNib 
{ 
    [self setTitle:@"Initial"]; 
    myTrackingRectTag = [self addTrackingRect:[self bounds] 
             owner:self 
            userData:NULL 
           assumeInside:YES]; 

} 

- (void) dealloc 
{ 
    [super dealloc]; 
    [self removeTrackingRect:myTrackingRectTag]; 
} 


- (void)mouseEntered:(NSEvent *)theEvent 
{ 
    [super mouseEntered:theEvent]; 

    [self setTitle:@"Entered"]; 
} 

- (void)mouseExited:(NSEvent *)theEvent 
{ 
    [super mouseExited:theEvent]; 

    [self setTitle:@"Exited"]; 
} 

@end 
+0

ああ、それはあなたが言っているかを理解するために時間がかかります。 私は頑張ります。アドバイスありがとう! – user1225834

関連する問題