我在视图中插入了两个标签。当我单击其中一个标签时,我想运行一些代码隐藏(更改子视图)并且标签中的文本应加下划线。
这应该如何在 Cocoa 中实现?
子类 NSTextField 并将其 mouseDown: 事件实现为
@interface ClickableLabel : NSTextField
@end
@implementation ClickableLabel
- (void)mouseDown:(NSEvent *)theEvent
{
[super mouseDown:theEvent];
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString: [self stringValue]];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString beginEditing];
// make the text appear with an underline
[attrString addAttribute: NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSSingleUnderlineStyle] range:range];
[attrString endEditing];
[self setAttributedStringValue:attrString];
[attrString release];
}
@end
将此设置ClickableLabel
为标签的类
要在标签中添加下划线文本,请设置其attributedText
属性。因此,您可以执行以下操作:
- (void)underlineRange:(NSRange)range forLabel:(UILabel *)label
{
NSMutableAttributedString *aText = [[NSMutableAttributedString alloc] initWithString:label.text];
[aText addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
label.attributedText = aText;
}
顺便说一句,当我写上面的评论时,我以为你想在UIButton
. 有一种更直接的方法,使用UIButton
'ssetAttributedTitle:forState
方法。