2015-06-15 27 views
0

我有我的UIView裏面有兩個UIViews。這是我的看法: enter image description hereiOS在鍵盤之前提起UIView?

在專注於文本字段上,顯示鍵盤和鍵盤隱藏我的文本字段。我想在鍵盤之前移動整個TextField View。我發現的代碼示例在這裏計算器: iPhone Keyboard Covers UITextField

這是代碼:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [self animateTextField: textField up: YES]; 
} 


- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    [self animateTextField: textField up: NO]; 
} 

- (void) animateTextField: (UITextField*) textField up: (BOOL) up 
{ 
    const int movementDistance = 80; // tweak as needed 
    const float movementDuration = 0.3f; // tweak as needed 

    int movement = (up ? -movementDistance : movementDistance); 

    [UIView beginAnimations: @"anim" context: nil]; 
    [UIView setAnimationBeginsFromCurrentState: YES]; 
    [UIView setAnimationDuration: movementDuration]; 
    self.view.frame = CGRectOffset(self.view.frame, 0, movement); 
    [UIView commitAnimations]; 
} 

我想實現這個,但我有它的麻煩。有人可以解釋如何正確地做到這一點?

+1

有一堆關於SOF上的這個問題的問題,請問之前谷歌它,這裏是第一個結果http://stackoverflow.com/questions/6435670/keyboard-hides-uitextfield-how-to-solve-這 –

+0

可能重複[如何使UITextField在鍵盤存在時向上移動](http://stackoverflow.com/questions/1126726/how-to-make-a-uitextfield-move-up-when-keyboard-is -當下) –

回答

1

而不是手動執行此操作。使用TPKeyboardAvoidingScrollView。 它易於使用。

首先把UIScrollView並把你的所有視圖放在裏面。

要與UITableViewController類一起使用,請將TPKeyboardAvoidingTableView.m和TPKeyboardAvoidingTableView.h放入您的項目中,並使您的UITableView成爲xib中的TPKeyboardAvoidingTableView。如果你沒有在你的控制器上使用xib,我知道沒有簡單的方法將它的UITableView作爲一個自定義類:阻力最小的路徑是爲它創建一個xib。

對於非UITableViewControllers,將TPKeyboardAvoidingScrollView.m和TPKeyboardAvoidingScrollView.h源文件拖放到您的項目中,將UIScrollView彈出到您的視圖控制器的xib中,將滾動視圖的類設置爲TPKeyboardAvoidingScrollView,並將所有控件放入該滾動視圖中。您也可以使用編程方式創建它,而不使用xib - 只需使用TPKeyboardAvoidingScrollView作爲頂層視圖。

0

你可以使用這樣的手動寫:

​​

而且你認爲合適的玩的kKeyboardOffset。 從textFieldDidBeginEditing調用它。 完成編輯後,只需在kKeyboardOffset前加一個+號即可調用相同的函數。