2012-01-14 27 views
5

tôi thấy đoạn này ít cho phép một để tạo ra các liên kết từ văn bản trong một NSTextView:Tạo một liên kết trong ứng dụng trong 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]; 
} 

Nó sẽ có thể để có điểm liên kết đến một số tài nguyên trong ứng dụng của tôi , ví dụ như một lớp trình xử lý cụ thể có khả năng diễn giải các liên kết và gửi đến một khung nhìn/bộ điều khiển tương ứng?

Trả lời

4

Bạn có thể xử lý các nhấp chuột vào các liên kết trong đại diện NSTextView của mình, cụ thể bằng cách triển khai phương thức textView:clickedOnLink:atIndex:.

Nếu bạn cần lưu trữ nhiều thông tin với mỗi liên kết, bạn có thể làm điều này bằng cách lưu trữ một đối tượng như một thuộc tính tùy chỉnh của chuỗi có liên kết:

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

Hãy chắc chắn rằng nếu bạn đang tiết kiệm do chuỗi mà bạn use the NSCoding protocol và không phải là phương pháp RTF của NSAttributedString vì RTF không thể lưu trữ thuộc tính tùy chỉnh.

Các vấn đề liên quan