2010-04-03 6 views
5

używam tej kategorii (jest to prawda?) http://www.nightproductions.net/references/dsclickableurltextfield_reference.html#setAttributedStringValuePróbując stworzyć więź z NSTextField

wdrożyć klikalne pól tekstowych. Mam importowany plik nagłówka w mojej klasie kontrolera i ustawić to przypisać wartość ciągu jak to

NSAttributedString* str = [[NSAttributedString alloc] initWithString:@"http://www.yahoo.com"]; 
[url setAttributedStringValue:(NSAttributedString *)str]; 

[str release]; 

tekście pola nie jest wybierany i nie można edytować.

Wartość pola tekstowego jest ustawiona, ale nie można jej kliknąć, a nie jest łączem.

Z góry dziękuję.

+0

Dodany Cocoa tag. – hallski

Odpowiedz

9

Znalazłem inny łatwy sposób, aby pokazać linki w NSTextField. Możesz użyć HTML. Oto krótki przykład:

-(NSAttributedString *)stringFromHTML:(NSString *)html withFont:(NSFont *)font 
{ 
    if (!font) font = [NSFont systemFontOfSize:0.0]; // Default font 
    html = [NSString stringWithFormat:@"<span style=\"font-family:'%@'; font-size:%dpx;\">%@</span>", [font fontName], (int)[font pointSize], html]; 
    NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding]; 
    NSAttributedString* string = [[NSAttributedString alloc] initWithHTML:data documentAttributes:nil]; 
    return string; 
} 

Teraz można wywołać metodę dla pola tekstowego:

// @property IBOutlet NSTextField *tf; 
[tf setAllowsEditingTextAttributes: YES]; 
[tf setSelectable:YES]; 
NSString *credits = @"Visit our <a href=\"http://www.webpage.com\">webpage</a>"; 
[tf setAttributedStringValue:[self stringFromHTML:credits withFont:[tf font]]]; 
+0

Jest to lepsze, ponieważ kursor zmienia się w kursor palca, a drugą metodą jest zmiana czcionki po kliknięciu. –