2014-09-25 48 views
0

此代碼在ios 7中運行得非常漂亮。但是,使用ios8和xcode 6.0.1時,它已停止工作。當用戶點擊文本字段輸入文本時,該字段會在鍵盤頂部上方浮動,以便他們可以看到他們正在鍵入的內容。任何想法爲什麼這個失敗現在。我可以看到它開始動畫的瞬間,但隨後文本字段消失。令人沮喪。TextField動畫破碎ios8

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:0.4]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
textField.frame = CGRectMake(textField.frame.origin.x, (textField.frame.origin.y - 200.0),    
textField.frame.size.width, textField.frame.size.height); 

_searchBtn.frame = CGRectMake(_searchBtn.frame.origin.x, (_searchBtn.frame.origin.y - 200.0), 
_searchBtn.frame.size.width, _searchBtn.frame.size.height); 
[UIView commitAnimations]; 


textField.alpha = .75; 


} 
+1

看起來像你有以下人一樣的問題http://stackoverflow.com/questions/26045048/how-to-implement-newsfeed-comment-page-similar-to-facebook-or-instagram。也許他的問題對你有一些答案。如果他的問題包括你的問題,你應該加大力度以引起更多關注。但我的猜測是他的問題會幫助你一點。例如你的200是硬編碼的。但是,你應該看着鍵盤通知,以便提取高度。對於測試,請嘗試將數字更改爲250並查看會發生什麼情況。 – 2014-09-25 18:55:12

+0

感謝您的回覆,Konsol。我試着將代碼動態調整到鍵盤的實際高度,但仍然沒有運氣。我也試着玩這些數字。非常感謝您的建議。有人必須爲此做出回答! – hansoac 2014-09-25 19:09:59

回答

1

的問題是,你的代碼調整您的文本域的位置由200.0

一個固定值這可能是偉大的iOS7但事情已經在iOS8上的變化有兩個原因:

  • 的系統鍵盤具有用於在打字時顯示預測單詞的附加視圖
  • 自定義鍵盤可以與開發人員選擇的一樣高

你需要改變你的做法搬家搬你的文本字段的位置,每當顯示或隱藏鍵盤使用以下兩種通知:

  • UIKeyboardWillShowNotification
  • UIKeyboardWillHideNotification

在下面的主題中,我將解釋可能出現的問題以及在鍵盤打開時如何正確移動視圖:

can't get correct value of keyboard height in iOS8

編輯1: 假設文本框中有一個名爲 「yourTextBox」 一個出口,該代碼來修改你的文本框的位置可能類似於:

CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
CGFloat keyboardHeight = <<calculated keyboard height as previously discussed>>; 
CGFloat textBoxHeight = _yourTextBox.frame.size.height; 

// Change the current frame of your textbox in order to reposition it 
CGFrame textBoxFrame = _yourTextBox.frame; 
textBoxFrame.origin.y = screenHeight - keyboardHeight - textBoxHeight; 
_yourTextBox.frame = textBoxFrame; 

注意:如果使用AutoLayout約束來定位子視圖,則需要避免修改框架並更改約束。如果您在這方面遇到問題,請發帖,因爲它會變得棘手。

+0

這真是太好了謝謝你!我已閱讀您的帖子,並正在實施您的建議。然而,我的代碼將如何將文本框移動到當前鍵盤高度的上方?它仍然是GCRectMake? – hansoac 2014-09-26 01:56:08