2010-04-03 35 views
5

Tôi đang sử dụng danh mục này (đúng không?) http://www.nightproductions.net/references/dsclickableurltextfield_reference.html#setAttributedStringValueCố gắng tạo liên kết với NSTextField

để triển khai trường văn bản có thể nhấp. Tôi đã nhập tệp tiêu đề trong lớp trình điều khiển của mình và đặt giá trị chuỗi được gán là như thế này

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

[str release]; 

Trường văn bản không thể chọn và không chỉnh sửa được.

Giá trị trường văn bản được đặt nhưng không thể nhấp và không phải là liên kết.

Xin cảm ơn trước.

+0

Added Cocoa thẻ. – hallski

Trả lời

9

Tôi đã tìm thấy một cách dễ dàng khác để hiển thị liên kết trong NSTextField. Bạn có thể sử dụng HTML. Dưới đây là một ví dụ ngắn:

-(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; 
} 

Bây giờ bạn có thể gọi phương thức cho lĩnh vực văn bản:

// @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

Điều này là tốt hơn vì con trỏ thay đổi thành con trỏ ngón tay và với phương pháp khác, phông chữ sẽ thay đổi khi được nhấp. –

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