0

我在视图中插入了两个标签。当我单击其中一个标签时,我想运行一些代码隐藏(更改子视图)并且标签中的文本应加下划线。

这应该如何在 Cocoa 中实现?

4

2 回答 2

2

子类 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为标签的类

于 2013-10-31T07:25:59.353 回答
0

要在标签中添加下划线文本,请设置其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方法。

于 2013-10-31T03:07:10.080 回答