2010-02-04 38 views
5

防止自動換行使用iPhone的SDK 3.1.2用的UITextView

我有啓用垂直和水平滾動一個UITextView控制。我希望每一行文本都可以不包裹顯示,以便用戶可以水平滾動以查看它。我遇到的問題是,即使啓用了水平滾動,文本也會在iphone屏幕的寬度處纏繞320像素。

如何防止包裝?

感謝

回答

1

我想你堅持把一個UITextField,用於滾動型。

5

使用sizeWithFont:從NSString UIKit添加獲取每行的寬度,然後將您的UITextView的contentSize屬性設置爲比最長行的寬度稍寬。

我在嘗試這種策略時出現了問題,這是在將字符串分配給UITextView的文本屬性時出現的。在分配時,UITextView將設置它的contentSize.width以匹配視圖的寬度,並且它會將新行插入到分配的文本字符串中以將其包裹到該寬度。分配uitextview.text後,您可以將contentSize.width設置爲最長行的長度,這會在滾動視圖中提供額外的空間,但換行符會停止填充新空間的文本。

如果在將文本加載到視圖中之前設置contentsize.width,則只有在加載文本時,纔會重置contentSize。

我試圖在加載前增加文本視圖的幀大小,這可以讓你的長線在屏幕邊緣上運行。但是,您無法滾動,當您縮小框架大小時,文本的換行符會重新調整並且contentSize會重新調整。如果在視圖中完全輸入任何文本,則會發生同樣的情況。

嗯,我相信uitextviews根本不能或者打算在此時進行水平滾動。我沒有看到如何在另一個滾動視圖中嵌入文本視圖也可以緩解這種情況。只需要在HTML中執行...

3

解決方法是關閉UITextView本身的所有滾動選項,然後將其嵌入到另一個UIScrollView中。您可以通過在谷歌搜索這個術語「DualScrollTextView」來獲得實際的代碼。

0

Woot I got it。

我在.xib上將UITextView寬度設置爲500。 在我的代碼中,我設置了 myUITextView.text = @「一些有很多行的巨大字符串」;

然後我設置 myUITextView.contentSize = CGSizeMake(600,myUITextView.contentSize.height);

當然,你可以使用任何你想要的寬度;只要確保後者更大。

3

我遇到了類似的問題。這是我的解決方案與自動佈局。

  1. 把你的UITextView在滾動視圖。粘貼文本視圖的邊框以滾動視圖的邊框。

  2. 對UITextView的寬度和高度使用兩個IBOutlet。我稱他們爲「heightConstraint」和「widthConstraint」

  3. 使用下面的代碼在您的視圖控制器:

    - (void)viewWillLayoutSubviews { 
        CGSize fit = [self.textView sizeThatFits:CGSizeMake(10000, 10000)]; 
        self.widthConstraint.constant = fit.width; 
        self.heightConstraint.constant = fit.height; 
    } 
    

我弄清楚,你可以問的UITextView來計算適合的尺寸,而不是自己計算每條線的長度