XCode'da bir Mac uygulaması geliştiriyorum. Belirli bir siteye giden bir köprü eklemem gerekiyor. Bunu bir düğme kullanarak denedim, ancak fare bu düğmenin üzerine geldiğinde imleci el imlecine nasıl değiştireceğimi bilmem gerekiyor.Kakao'da Köprü
cevap
URL'yi görüntülemek için düzenlenebilir olmayan bir NSTextField kullanabilirsiniz. Niteliklerini, alanın değer özelliği olarak ayarladığınız NSAttributedString üzerinde uygun şekilde ayarlarsanız, standart mavi-alt çizgi olarak görüntülenir ve imleç izlemeyi sizin için halleder. This Apple Q & A, URL'nin niteliklerini nasıl ayarlayacağınızı anlatır.
İmleci ayarlamak için imleç izleme yöntemini addCursorRect:cursor:
kullanmanız gerekir. Ancak, bu yöntemi yalnızca resetCursorRects
yönteminin içinden çağırmanız yeterlidir. Bunu başka bir zamanda yaparsanız, temel olarak göz ardı edilmesi garanti edilir.
Yani bu NSButton
alt sınıf gerektiği anlamına gelir (veya NSView
alt sınıf kullanmak istediğiniz her ne ise) ve tüm görünüm en bounds
için addCursorRect:cursor:
aramaya resetCursorRects
geçersiz kılar.
mükemmel benim için çalıştı: o zaman
// Converts an otherwise plain NSTextField label into a hyperlink -(void)updateControl:(NSTextField*)control withHyperlink:(NSString*)strURL { // both are needed, otherwise hyperlink won't accept mousedown [control setAllowsEditingTextAttributes: YES]; [control setSelectable: YES]; NSURL* url = [NSURL URLWithString:strURL]; NSAttributedString* attrString = [control attributedStringValue]; NSMutableAttributedString* attr = [[NSMutableAttributedString alloc] initWithAttributedString:attrString]; NSRange range = NSMakeRange(0, [attr length]); [attr addAttribute:NSLinkAttributeName value:url range:range]; [attr addAttribute:NSForegroundColorAttributeName value:[NSColor blueColor] range:range ]; [attr addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:range]; [control setAttributedStringValue:attr]; }
Ve
, bunu çağırmak pencere başlatır bazen zaman içine NSTextField ve URL dizesini geçmek. Alt sınıf NSTextField var. –Bundan sonra tökezleyenler için güncellenmiş bir cevap atmak istiyorum.
Barry'nin cevabında Apple Q & A tarafından belirtilen çözümü denediğimde, etiket bağlantımın metninin tıklandığında küçüleceğini öğrendim. Bazı hata ayıklamalardan sonra, Apple'ın makalesindeki örnek kodun yeni bir öznitelik dizesi oluşturduğunu ancak başlangıçta etiket denetimindeki orijinal özniteliklerin hiçbirini korumadığını öğrendim. Çözüm, etiketin orijinal atfedilen dizesinin bir kopyasıyla başlamalı, yeni köprü özelliklerini eklemeli ve etiketi güncellemelidir.
NSTextField etiketini bir köprüye dönüştüren basit bir yardımcı işlev yapıyorum. Temelde, Apple'ın sayfasındaki çözümü NSAttributeString'e kategori uzantısı eklemesine gerek kalmadan birleştirir. , Teşekkürler
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[self updateControl:_label withHyperlink:@"http://www.stackoverflow.com"];
}
- 1. Kakaoda öykünme Cmd + ~
- 2. Kakaoda XML Ayrıştırma
- 3. Mac masaüstünde kakaoda yeniden konumlandırma
- 4. Kakaoda kullanım için renkli göstergeleri nerede bulabilirim?
- 5. Kakaoda uyarı pop-up'ı nasıl gösterilir?
- 6. Kakaoda kalın başlık çubuğu penceresi, iTunes'a benzer
- 7. NSBezierPaths'ın kakaoda kesişip kesi olmadığını nasıl belirleyebilirim?
- 8. Kakaoda tamsayı ve diğer maskeleri çözme
- 9. köprü biçimini değiştir
- 10. MessageBox.show'da Köprü nasıl oluşturulur?
- 11. Aynı rapordaki Köprü - SSRS
- 12. Mosquitto maksimum köprü kalıcılığı
- 13. Excel Köprü toplu güncelleştirmesi
- 14. JQuery'de metne Köprü ekleme
- 15. Linq köprü performans
- 16. Slack'de Köprü Oluştur
- 17. Köprü metnini javascript
- 18. TextView Köprü çalışmıyor?
- 19. Otomatik Köprü ayıklanan dosyalar
- 20. Köprü OnClick olayı kodun arkasında
- 21. Linux'ta CoreFoundation'a bağlanma/köprü oluşturma
- 22. GWT'de basit köprü var mı?
- 23. Köprü, phalcon'da volt üzerinde çalışmıyor
- 24. Kakaoda Sistem Tercihinde FinderSync Uzantısı nasıl etkinleştirilir - Objective C
- 25. Köprü tıklatmayla ilgili bir sunucu çağrısı çağırın
- 26. Metin bloğundaki köprü düğmesini programlı olarak ekleme
- 27. Excel, köprü adlarını kolay adlarla bağlantılara dönüştürür
- 28. MVVM deseninde Köprü kullanımı ile Hücre Şablonu
- 29. JFace iletişim kutusuna nasıl köprü ekleyebilirim
- 30. Parlak uygulamada etkileşimli bir köprü nasıl oluşturulur?
Bu Apple teknik notunda yer alan tek sorun, fare imlecinin fareyle üzerine gelindiğinde I-beam metin giriş stili imlecine dönüşmesidir. –
Daha fazla sorun, bağlantıyı tıklattığınızda NSTextField öğesinin yazı tipini sistem varsayılanına değiştirir. Metin alanın yazı tipini kaleme almak için metni zorlayarak aşağıdaki hataları giderir: '[attString addAttribute: NSFontAttributeName value: [label font] range: NSMakeRange (0, [attString length])];' –