2013-07-20 3 views
-1

От Google Перевод:Клавиатура и текстовые поля

Привет, когда я нажимаю на текстовое поле, я внесла некоторые изменения в представление выбора.

Когда я перемещаюсь из текстового поля в текстовое поле, не касаясь кнопки «Готово», и я перешел в текстовое поле, содержащее представление выбора, и я нажимаю, вид прокрутки не возвращается к исходному размеру ,

Вы знаете, как понравиться?

Оригинал:

Bonjour, lorsque JE клики Сюр ООН текстовое поле, J'ai Fais Quelques модификации налить qu'un вид сборщика apparaisse.

Quand je navigue текстовое поле в текстовом поле, которое не касается касания «коснитесь», и вы можете прослушивать текст в текстовом поле, как показано ниже, а также в режиме просмотра, pas sa taille initiale.

Savez vous comment faire s'il vous plaî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 vous plaît (английский, пожалуйста). – rmaddy

+0

Либо вы делаете что-то действительно странное, чтобы поместить 'UIPickerView' в' UITextField', либо Google Translate не работает слишком хорошо. Я принимаю последнего и спрашиваю моего друга, может ли она помочь. – WolfLink

ответ

0

Я думаю, что вы говорите, что Вы установили inputView из UITextField к UIPickerView, и что, когда вы нажмете Готово после использования UIPickerView в Scrollview не возвращается к его предыдущее местоположение. Глядя на ваш код, я думаю, это связано с тем, что ваш метод keyboardWillHide вызывается только тогда, когда система отправляет UIKeyboardWillHideNotification. Я предполагаю, что система не отправляет UIKeyboardWillHideNotification, когда вы нажимаете кнопку «Готово». Вам нужно добавить код в любой метод, который вызывается при нажатии кнопки «Готово», которая вызовет ваш метод keyboardWillHide.

+0

Да, я думаю, это так, но для чего нужен код? У вас есть идея? – user2602992

+1

Удаляет ли кнопка «Готово» ваш UIPickerView? Если это так, у вас должен быть какой-то код где-то отправляет 'resignFirstResponder' вам UITextField, когда это произойдет. Добавьте –

+0

так: '[myTextField resignFirstResponder];'. Это то, что вы используете, чтобы клавиатура ушла в обычных условиях. – WolfLink

Смежные вопросы