我在视图中插入了两个标签。当我单击其中一个标签时,我想运行一些代码隐藏(更改子视图),标签中的文本应加下划线。
如何在Cocoa中实现?
答案 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}}方法。