2012-01-14 22 views
5

znalazłem ten mały fragment, który pozwala na tworzenie linków z tekstem w NSTextView:Tworzenie łącza w aplikacji w NSTextView

-(void)setHyperlinkWithTextView:(NSTextView*)inTextView 
{ 
    // create the attributed string 
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] init]; 

    // create the url and use it for our attributed string 
    NSURL* url = [NSURL URLWithString: @"http://www.apple.com"]; 
    [string appendAttributedString:[NSAttributedString hyperlinkFromString:@"Apple Computer" withURL:url]]; 

    // apply it to the NSTextView's text storage 
    [[inTextView textStorage] setAttributedString: string]; 
} 

byłoby możliwe, aby mieć punkt łącza do niektórych zasobów w mojej aplikacji , na przykład do konkretnej klasy obsługi, która jest zdolna do interpretowania linków i wysyłania do odpowiedniego widoku/kontrolera?

Odpowiedz

4

Możesz obsługiwać kliknięcia linków w swoim delegacie NSTextView, w szczególności za pomocą metody textView:clickedOnLink:atIndex:.

Jeśli trzeba przechowywać więcej informacji z każdego linku, można to zrobić poprzez zapisanie obiektu jako atrybutu niestandardowego łańcucha z linkiem:

NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys: 
          yourObject, @"YourCustomAttributeName", 
          @"link", NSLinkAttributeName, 
          nil]; 
NSAttributedString* string = [[[NSAttributedString alloc] initWithString:@"Your string" attributes:attributes] autorelease]; 

Upewnij się, jeśli jesteś zapisywania nadana ciąg znaków, który jest use the NSCoding protocol, a nie metody RTF z NSAttributedString, ponieważ RTF nie może przechowywać niestandardowych atrybutów.

Powiązane problemy