2011-07-22 65 views
9

我正在創建一個以編程方式創建UITextView的應用程序。問題在於,當用戶鍵入文本或應用程序設置文本時,文字會跨過一行並離開屏幕,而不是包裝到下一行。當我使用界面構建器創建UITextView時,文本會自動換行,但不會以編程方式創建。如何創建自動換行文本的UITextView?

代碼:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 12, 210, 60)]; 
[[self view] addSubview:textView]; 
[textView becomeFirstResponder]; 
+0

TextViews自動添加文本換行:HTTP://developer.apple.com/library/ios/#documentation/uikit/reference/uitextview_class/Reference/UITextView.html是你確定你不是指textFields? – chandhooguy

回答

2

UITextViewUITextField屬於不同類別。 UITextField是單行而UITextView是多行。以編程方式創建UITextView而不是UITextField,並且您已解決了我期望的問題。

+6

他的代碼很清楚他正在創建一個「UITextView」的實例。 – PengOne

+1

他的答案的第一行是「我正在創建一個應用程序,以編程方式創建一個'UITextField'」,因此我的答案是。 – mxcl

+0

我注意到你編輯了他的答案。我給出了賠率2-1,這只是他的代碼中的一個錯誤,他使用的是UITextField而不是UITextView,我已經看到它完成了三次或四次,這是一個容易犯的錯誤,並且符合所提供的證據。另外,值得注意的是,UITextField沒有一個horizo​​ntalScrollBar,它解釋了上面的崩潰,當他試圖禁用它時。至少,你應該撤銷你給我的答案的減號:P – mxcl

0

UITextView的整個點是允許多行文本。從文檔:

UITextView類實現可滾動, 多行文本區域的行爲。該類支持使用 自定義字體,顏色和對齊方式顯示文本,並且還支持文本編輯。在顯示大型文本文檔的正文時,您通常使用文本視圖來顯示多行文本,如 。

由於UITextViewUIScrollView繼承,你可以迫使它通過禁用水平滾動合作。爲此,您需要設置contentSize,例如

CGSize scrollableSize = CGSizeMake(210, 480); 
[textView setContentSize:scrollableSize]; 

這將寬度固定到210並允許高度滾動到480。由於您將textView設置爲(210,60)的大小,因此應該允許垂直滾動而不是水平滾動。

+0

這可能是問題,但不在我的情況。即使textview是整個屏幕的大小,並且有許多行的空間,文本也不會自動換行。任何其他想法? – Greg

+0

@Greg:我只是四處張望,發現了3篇帖子,在09年6月和1月11日之間,提出這個問題並得不到解決。 – PengOne

+0

這是關於,我覺得這是一個非常簡單的問題。許多應用程序利用UITextViews打包文本,並且它們都不能使用IFB創建。 – Greg

2

可用的iOS以來7:

textView.textContainer.lineBreakMode = NSLineBreakByWordWrapping; 
相關問題