2012-06-25 106 views
3

我正在嘗試實施調整大小以適應其內容的NSTextView。我正在嘗試使它具有最大的行數。意思是,當達到這個限制時,它不會再增長,用戶將能夠滾動它。更改NSTextView的大小

似乎有很多人想要這個,但我還沒有找到這個完整的實現。

這個想法是取NSTextView的內容大小並調整它的大小以使它匹配。我只是不知道如何設置NSTextView的佈局大小。它似乎並不是frame需要設置以及可能期望的。

任何人都可以請告訴我如何設置NSTextView的框架?

回答

3

事實證明,這是應該改變的滾動視圖的高度。改變NSTextView的高度可以通過覆蓋下面的-didChangeText方法來完成。

- (void)didChangeText 
{ 
    NSScrollView *scrollView = (NSScrollView *) self.superview.superview; 
    NSRect frame = scrollView.frame; 

    // Calculate height 
    NSUInteger numberOfLines = [self numberOfLines]; 
    NSUInteger height = frame.size.height; 
    if (numberOfLines <= 13) 
    { 
     height = 22 + (numberOfLines - 1) * 14; 
     if (height < 22) 
      height = 22; 
    } 

    // Update height 
    frame.size.height = height; 
    self.superview.superview.frame = frame; 
} 

玩弄常數來得到你想要的結果。