如何在活动状态下实现带下划线文本的标签按钮

时间:2013-10-30 20:00:29

标签: objective-c cocoa

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

如何在Cocoa中实现?

2 个答案:

答案 0 :(得分:2)

将NSTextField子类化并将其mouseDown:event实现为

@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设为您的标签类

答案 1 :(得分: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的{​​{1}}方法。