gpt4 book ai didi

macos - 当光标位于 NSButton 上时如何更改 NSButton 的标题

转载 作者:行者123 更新时间:2023-12-03 16:17:14 27 4
gpt4 key购买 nike

我是 Cocoa 编程的初学者。当光标位于按钮上时,如何更改 NSButton 的标题? (无需点击)。

最佳答案

如果您查看 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 或您的初始化消息,具体取决于您的使用情况):

[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

关于macos - 当光标位于 NSButton 上时如何更改 NSButton 的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com