2013-06-28 14 views
5

Kullanıcı türleri olarak dikey olarak büyüyen ve yükseklik maksimum düzeye ulaştığında kaydırma yapan bir NSTextView oluşturmaya çalışıyorum. Bu, Mesajlar çalışmalarındaki metin görünümüne benzer. Metin görünümün (kaydırma görünümün) yüksekliği I olarak güncellenir: Bu, hemen hemen çalışırİçeriği sığdırmak için NSTextView'ı büyütmek son satır metnini kırpıyor

- (void)textDidChange:(NSNotification *)notification 
{ 
    NSTextView *textView = self.textView; 
    NSRect usedRect = [textView.textContainer.layoutManager usedRectForTextContainer:textView.textContainer]; 
    NSLog(@"DEBUG: used rect: %@", NSStringFromRect(usedRect)); 
    self.textViewHeightConstraint.constant = MIN(80.f, MAX(usedRect.size.height, 30.f)); 
} 

:

Benim ilk girişimi metin değişiklikleri işler ve NSTextView kaydırma görünümü ile ilişkili yükseklik sınırlaması ayarlamak için temsilci kullanır kaydırma görünümü maksimum yükseklik var ulaşır

enter image description here

kez ve o güzel çalışıyor kaydırma başlar: tip Ancak metninin son satırı kırpılır. Şok içermeyen kaydırma görünümünde bir görüntü/düzen/kısıtlama güncellemesi yapmaya çalıştım. Tahminim, kaydırma görünümündeki klip görünümünün doğru şekilde güncellenmemesi ve metin görünümünün alt kısmının kırpılmasıdır. Kısıtlama değiştiğinde, klip görünümünü/kaydırma görünümünü uygun şekilde güncellemek için zorlamanın bir yolu var mı?

+0

Bunu çözdünüz mü? – KVISH

cevap

0

Herhangi bir kullanım olup olmadığından emin değilim, ancak available on GitHub olan dikey olarak genişleyen bir NSTextView alt sınıfı yazdım. Bir göz atmak veya istediğiniz gibi ayarlamak için çekinmeyin.

+0

Teşekkürler - Metin görünümünün ana görünümünde otomatik düzeni (ve buna dayanarak) kullanıyorum, bu yüzden genişleyen metin görünümünü kullanabileceğimden emin değilim. Umarım bana doğru yönde işaret eder. – ppilone

+0

Kodunuzu işe nasıl aldınız? Sohbet gibi bir arayüzde (alt için metin görünümünde) ve çalışmamasında kullanıyorum. Yukarıdaki gibi aynı sorun. – KVISH

+0

Sadece kodumu tekrar ziyaret ettim (3 yıl sonra ..) ve sanırım AutoLayout ile çalışıyorum. Değişikliklerimi bir saniye içinde GitHub'a göndereceğim –

0

NSTextView öğesinin yüksekliğini textContainer için gereken boyuta ayarladığınızı, ancak metin görünümünün eklediği ekleme için hesap oluşturmadığınızı düşünüyorum. Hesaplanan yüksekliğe -[NSTextView textContainerInset] yüksekliğini eklemeyi deneyin.

Dokümantasyon gerçekten belirtmiyor, ancak textContainerInset'un tüm kenarlarda toplam genişlik/yükseklik değerini döndürdüğünü ve -[NSTextView textContainerOrigin]'un kabaca ikiye böldüğünü varsayardım.

İlgili konular