2009-07-23 136 views
2

我在我的應用程序中實現了一些簡單的文本聊天功能,我遇到了以編程方式滾動UITextView的問題。我正在使用在Interface Builder中創建的UITextView,它在預先存在的文本中添加一個新行和一些文本。當添加新文本時,它應該滾動到底部。以編程方式滾動UITextView

我構建了一個測試應用程序,以在將其添加到我的應用程序之前確定這個概念。 UITextView中的文本將更新爲UITextField中的文本,但不會發生滾動。

- (IBAction)enteredText { 

CGPoint currentPosition = [textWindow contentOffset]; 
[textWindow setText:[NSString stringWithFormat:@"%@\n%@", textWindow.text, textInput.text]]; 
[textWindow setContentOffset:currentPosition animated:NO]; 
[textWindow scrollRangeToVisible:NSMakeRange([textWindow.text length], 0)]; 
[textInput setText:@""]; 
[textInput becomeFirstResponder]; 

}

我記得落實在另一個應用程序開發我前一陣子andfrom我記得代碼類似於一個非常類似的功能。唯一的區別是以前的應用程序是針對iPhone OS 2的,但是這個針對的是3.0。我在一些論壇上讀到,當在Interface Builder中創建UITextView時,3.0 beta版在滾動時遇到了一些問題。我檢查了current release notes,我沒有看到任何指示。

編輯:由於文本在UITextView中更新,因此調用IB操作。並且選中「可取消的內容接觸」。

編輯:證實了相同的代碼工作在2.2.1但不是3.0

回答

3

我發現用戶點擊UITextView後,滾動開始工作。所以,當我裝這期特別是我臨時設置的UITextView爲FirstResponder,那麼作爲的UITextField FirstResponder:

[myChatRoomViewController.chatWindow becomeFirstResponder]; 
[myChatRoomViewController.input becomeFirstResponder]; 

自動發生的,儘管它似乎比我在iPhone OS想起2.

不太平滑滾動,然後
0

你確定IBAction爲獲取調用?如果是這樣,請嘗試確保在Interface Builder中選中「可取消內容接觸」。這應該可以解決你在帖子中暗示的問題。

+0

我知道該操作正在被調用,因爲文本更新。是的,我看到檢查「可取消內容觸摸」修復了3.0中的問題。我應該在原文中包含這些細節。 「可取消內容觸摸」背後的詳細信息 – 2009-07-23 17:29:36