2013-07-20 72 views
-1

From Google翻譯:Keyboard and TextField

你好,當我點擊文本字段時,我對選取器視圖做了一些修改。

當我從文本字段導航到文本字段而未觸及「完成」按鈕時,我轉到包含選取器視圖的文本字段,並且按下完成後,滾動視圖不會恢復到其原始大小。

你知道如何取悅嗎?

原文:

卓悅,lorsque JE集團河畔的聯合國文本字段,J'AI FAIS quelques修改倒qu'un選擇器視圖apparaisse。

Quand je navigue de text field en text field sans toucher sur la touche「Terminé」et que je je rend dans un text field qui contient un picker view et que la,j'appuis surterminé,le scroll view ne remand pas sa taille motle。

Savez vous評論faire s'il vousplaît?

Voici週一代碼:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [ScrollView setContentSize:CGSizeMake(320, 974)]; 
    [ScrollView setScrollEnabled:YES]; 

    //on abonne notre instance aux notifications du clavier lorsqu'il apparaît et lorsqu'il disparait 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) 
               name:UIKeyboardWillShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) 
               name:UIKeyboardWillHideNotification object:nil]; 
} 

- (void)keyboardWillShow:(NSNotification *)aNotification { 
    //si le clavier est déjà présent on ne fait rien 
    if (keyboardIsShown) { 
     return; 
    } 

    if (nom.editing == YES) 
    { 
     //on récupère la taille du clavier 
     NSDictionary* info = [aNotification userInfo]; 
     CGRect _keyboardEndFrame; 
     [[info valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&_keyboardEndFrame]; 
     CGSize keyboardSize = _keyboardEndFrame.size; 

     //on crée une nouvelle frame pour la scrollView 
     CGRect viewFrame = self.ScrollView.frame; 
     viewFrame.size.height -= keyboardSize.height; 

     //on redimensionne la scrollView dans une animation 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationBeginsFromCurrentState:YES]; 
     [UIView setAnimationDuration:0.3]; 
     [self.ScrollView setFrame:viewFrame]; 
     [UIView commitAnimations]; 

     //on scroll jusqu'au champs texte en cours d'édition 
     CGRect textFieldRect = nom.frame; 
     [self.ScrollView scrollRectToVisible:textFieldRect animated:YES]; 

     //on enregistre l'état actuel du clavier 
     keyboardIsShown = YES; 
    } 

    else if (dateVol.editing == YES) 
    { 
     //on récupère la taille du clavier 
     NSDictionary* info = [aNotification userInfo]; 
     CGRect _keyboardEndFrame; 
     [[info valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&_keyboardEndFrame]; 
     CGSize keyboardSize = _keyboardEndFrame.size; 

     //on crée une nouvelle frame pour la scrollView 
     CGRect viewFrame = self.ScrollView.frame; 
     viewFrame.size.height -= keyboardSize.height; 

     //on redimensionne la scrollView dans une animation 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationBeginsFromCurrentState:YES]; 
     [UIView setAnimationDuration:0.3]; 
     [self.ScrollView setFrame:viewFrame]; 
     [UIView commitAnimations]; 

     //on scroll jusqu'au champs texte en cours d'édition 
     CGRect textFieldRect = prenom.frame; 
     [self.ScrollView scrollRectToVisible:textFieldRect animated:YES]; 

     //on enregistre l'état actuel du clavier 
     keyboardIsShown = YES; 
    } 
} 

//méthode appelée lorsque le clavier disparaît (on quitte l'édition d'un champs texte) 
- (void)keyboardWillHide:(NSNotification *)aNotification { 

    if (nom.editing == YES || dateVol.editing == YES) 
    { 
     //get the size of the keyboard 
     NSDictionary* info = [aNotification userInfo]; 
     CGRect _keyboardEndFrame; 
     [[info valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&_keyboardEndFrame]; 
     CGSize keyboardSize = _keyboardEndFrame.size; 

     //resize the scroll view 
     CGRect viewFrame = self.ScrollView.frame; 
     viewFrame.size.height += keyboardSize.height; 

     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationBeginsFromCurrentState:YES]; 
     [UIView setAnimationDuration:0.3]; 
     [self.ScrollView setFrame:viewFrame]; 
     [UIView commitAnimations]; 

     keyboardIsShown = NO; 
    } 
} 
+3

你能用英文發表你的問題嗎? –

+2

Anglais s'il vousplaît(英語請)。 – rmaddy

+0

要麼你正在做一件非常奇怪的事情,把'UIPickerView'放到'UITextField'中,否則Google Translate不能很好地工作。我假設後者,並問我的朋友是否可以幫忙。 – WolfLink

回答

0

我想你說你已經設置的UITextField到一個UIPickerView的inputView,而當你點擊使用UIPickerView滾動視圖做完之後沒有返回到其以前的位置。看看你的代碼,我想這是因爲你的keyboardWillHide方法只在系統發送UIKeyboardWillHideNotification時才被調用。我假定當您按下完成按鈕時系統沒有發送UIKeyboardWillHideNotification。當您按下完成按鈕時,您需要將代碼添加到所調用的任何方法中,該按鈕將調用您的keyboardWillHide方法。

+0

是的,我認爲是這樣,但請問這是什麼代碼?你有好主意嗎 ? – user2602992

+1

完成按鈕是否會使您的UIPickerView消失?如果是這樣的話,那麼當發生這種情況時,你應該有一些代碼將'resignFirstResponder'發送給你的UITextField。像這樣添加 –

+0

:'[myTextField resignFirstResponder];'。正常情況下,用它來使鍵盤消失。 – WolfLink