2014-03-25 15 views
0

我在UIScrollView上動態創建textFields,我將視圖動畫化,以在鍵盤隱藏它時將textField置於鍵盤上方。動畫視圖使用的代碼如下:textFieldDidBeginEditing在動畫之後並不是正在調用視圖

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    CGRect textFiledFrame = textField.frame; 

    if (textFiledFrame.origin.y > 219 && textField.tag > 150 && viewAnimated == 0) { 
     CGRect superViewFrame = textField.superview.frame; 
     superViewFrame.origin.y = superViewFrame.origin.y - 120; 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.6]; 
     [textField.superview setFrame:superViewFrame]; 
     [UIView commitAnimations]; 
     viewAnimated = 1; 
    } 
} 

爲每一次我點擊文本框textFieldDidBeginEditing:(UITextField *)textField是被調用,但一旦觀統領動畫,textFieldDidBeginEditing:(UITextField *)textField不會被調用

+0

還沒有嘗試過你的代碼,但'Rect'是一個關鍵字。嘗試重構它。 – n00bProgrammer

回答

0

有幾種你的代碼有問題:

  • 你不應該硬編碼任何鍵盤相關的大小。取而代之的是利用iOS框架爲您提供的鍵盤信息(例如,請參閱:How to make a UITextField move up when keyboard is present?

  • 您在if語句中設置ViewAnimated = 1 - 您是否曾將其休息到0?如果不是,if語句將永遠不會再次進入,因爲你如果子句中ViewAnimated == 0檢查...

  • 變量不應該以大寫字母(矩形,ViewAnimated)開始 - 更好的是textRect EN viewAnimated

+0

是的,我將ViewAnimated移動到0後,在我的應用程序中,每個關於textFields的信息都來自web,對於同一個Srollview,textFields的數量可以是2或者也可以是200.這就是爲什麼我使用了這個邏輯。至於這個問題是我已經解決的問題,我會給出答案,我會接受它。 –

+0

你真的不應該那樣做 - 看看我提供的鏈接,並檢查使用contentInsets的滾動視圖的答案,這是做到這一點的最佳方式。你不需要擺弄布爾和框架等來做到這一點,這總是容易出錯。 – TheEye

相關問題