我是Cocoa Programming的初学者。
当光标在按钮上时,如何更改NSButton
的标题? (没有点击)。
答案 0 :(得分:7)
如果你看一下NSButton的类层次结构,你会发现它是从NSResponder派生的,NSResponder是处理鼠标事件的类。
创建NSButton的子类并覆盖以下消息以将标题设置为您想要的内容:
- (void)mouseEntered:(NSEvent *)theEvent
- (void)mouseExited:(NSEvent *)theEvent
将此添加到您的初始化程序(awakeFromNib或您的初始化消息,具体取决于您的使用情况):
[self addTrackingRect:[self bounds] owner:self userData:NULL assumeInside:YES];
请注意,即使鼠标第一次没有实际进入跟踪区域,标题也会显示退出的消息。如果您想在第一次进入跟踪区域之前设置第三个标题,则可能需要在课程中添加一些状态。
编辑:也许这会有所帮助。这是头文件“MyButton.h”:
#import <Cocoa/Cocoa.h>
@interface MTButton : NSButton {
NSTrackingRectTag myTrackingRectTag;
}
@end
非常标准的东西。
这是我的源文件。
#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