THIS kılavuzunu Apple'dan takip ediyorum, ancak gerçekten düzgün çalışmıyor.NSAttributedString TextField öğesinde değişiklik yapma/sıfırlama
Temel olarak, bir Window içindeki bir NSTextField öğesine özel bir WindowController sınıfı aracılığıyla bir köprü eklemeye çalışıyorum. Ben köprü üzerine geldiğinizde
- bir 'ben fasulye' (eğer metni seçebilirsiniz gösterir imleç) olsun: Birkaç sorunları ile çalışan köprüyü almanız mümkün değilim. Normalde köprüler üzerinden görüntülenen bir el istiyorum
- Köprüdeki metni tıklattığımda, tarayıcımdaki bağlantıyı başarıyla açar, ancak metin boyutunu ve biçimini değiştirir (örneğin, artık ortalanmıyor, bazılarına geri döner) varsayılan). Şimdi üzerine geldiğimde elimi aldım. biraz deneme sonrasında
, ben ilk dize (örneğin boyutu, üzerinde tıklamadan önce yazı) .xib dosyasının içinde etiket oluşturduktan yani biçimlendirme olduğunu ayırt ettik. Ben, bunu tıkladıktan sonra Herhangi bir şekilde etkileyemediğim bazı varsayılan yazı tiplerine dönüşür. Yine de hiperlink devam ediyor. .xib çok basittir AboutWindowController.h
#import <Cocoa/Cocoa.h>
@interface AboutWindowController : NSWindowController
@property (weak) IBOutlet NSTextField *testLabel;
@end
AboutWindowController.h
#import "AboutWindowController.h"
@interface AboutWindowController()
@end
@implementation AboutWindowController
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
[self.testLabel setAllowsEditingTextAttributes:YES];
[self.testLabel setSelectable:YES];
NSMutableAttributedString* string1 = [[NSMutableAttributedString alloc] init];
NSString* inString = @"Apple Computer";
NSURL* aURL = [NSURL URLWithString:@"www.google.com"];
NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString: inString];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString beginEditing];
[attrString addAttribute:NSLinkAttributeName value:[aURL absoluteString] range:range];
// make the text appear in blue
[attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blueColor] range:range];
// next make the text appear with an underline
[attrString addAttribute:
NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSSingleUnderlineStyle] range:range];
[attrString endEditing];
[string1 appendAttributedString: attrString];
[self.testLabel setAttributedStringValue:string1];
[self.testLabel setFont:[NSFont fontWithName:@"Helvetica" size:20]];
}
@end
:
İşte kodun bir kısmını var o bir pencere var etiketli ve etiketini .h dosyasına doğru şekilde bağladım (inanıyorum)
Yardımlarınız için teşekkürler. Soruları/açıklamaları yanıtlamak için düzenli olarak kontrol etmeyi deneyeceğim. DÜZENLEME: Lütfen durumumun güncellemesi için bikram'ın cevabı hakkındaki yorumumu kontrol edin.
Cevabınız için teşekkürler - ancak, her şeyi düzeltmedi. Etiketin üzerine geldiğimde (Apple Computer, boyut 20 helvetica), hala beyaz bir asıl imleci göstermiyor (linklere tıklamak için); sadece bir bar. Ayrıca, [self.testLabel setFont ...] 'ı ve [attrString addAttribute: NSFontAttributeName ...]' seçeneğini işaretlediğimde, etiketi tıklatıp metnin yazı tipini sıfırlar. Belki bu biraz anlayış sağlar? – Connor
Test projesinde olduğu gibi başka bir şey de yapıyor olabilirsiniz, bu fonksiyonu ekledim ve el imlecini gösteriyorum ve test projesinin buradan yayınlanmasını istiyorsanız yazı tipini değiştirmiyor. – bikram990
Çok yararlı olur, lütfen yapın! – Connor