2010-05-24 162 views
0

我想我錯過了一些明顯的東西,並希望得到答案。向上滾動屏幕以顯示鍵盤上方的TextView

我有一個2段分組tableView,每個部分有一個行和一個textView,行335和140的高度的視圖。這允許一個有很好的圓角的框鍵入文本到鍵盤出現(140高度部分),當鍵盤被解散時,一個漂亮的盒子可以閱讀更多的文字(註釋);大多數情況下,使用沒有鍵盤。

我還在屏幕底部添加了一個工具欄來在鍵盤上方向上滾動。工具欄上的按鈕會關閉鍵盤。最後這部分工作正常鍵盤上上下下使用的通知,並在keyboardWillShow方法如下代碼:

[UIView beginAnimations:@"showKeyboardAnimation" context:nil]; 
[UIView setAnimationDuration:0.50]; 
self.view.frame = CGRectMake(self.view.frame.origin.x, 
          self.view.frame.origin.y, 
          self.view.frame.size.width, 
          self.view.frame.size.height - 216); 
[UIView commitAnimations]; 

但與上面的代碼中,的tableView的2個部分仍然未渦卷,只有工具欄和鍵盤移動。使用下面的代碼(在以前的文章中都可以找到),工具欄和tableView部分都會移動。

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.50]; 

CGRect rect = self.view.frame; 
rect.origin.y -= 216; 
self.view.frame = rect; 

[UIView commitAnimations]; 

現在我知道我必須調整的數字得到一切我所想要的,但我的第一個問題是什麼是2臺的代碼,該段在第二,但不是在移動之間的本質不同第一?工具欄也隨第二個代碼一起移動。

第二個問題是,我可以將屏幕下方的較小高度部分滾動到鍵盤上方,同時將工具欄向上移動216?

感謝

回答

1

我可能失去了一些東西,但在第一段代碼,你是216,而在第二張的代碼改變高度,你被改變了整個視圖的由來在y方向上是216。

根據您在IB中設置的框架的不同,如果您不允許它沿該方向移動,則第一段代碼可能不會移動它。在巡視窗口中檢查您的設置。

當你說「unscrolled」你指的是他們沒有改變主視圖內的位置正確嗎?這與他們實際滾動的不同(你可以通過改變滾動值來實現)。

你可能想看看這裏的隱藏抽屜的例子,因爲他們將視圖進出主視圖,有點像工具欄,我想這就是你要求的。雖然整個「滾動」的東西都扔掉了我。

http://cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

+0

謝謝,羅布。我盯着那個最長的(身高與起源),並沒有看到它。鏈接是完美的讓我做我想做的事。 – 2010-05-24 21:28:21

+0

永遠不會因爲一個問題而得到第二雙眼睛!祝你好運,樂於幫助。 – iwasrobbed 2010-05-24 21:48:50

0

從內存中,像

tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight