2015-04-19 1 views
0

Привет Я работаю над небольшим проектом просто для удовольствия. В основном это текстовое поле, в котором вы можете ввести короткий текст (в основном только несколько слов), а затем у вас есть 3 основные кнопки (это выглядит как панель вкладок), у вас есть возможность нажимать клавиатуру, чтобы изменить текст или введите один, если у вас его нет, вы можете нажимать цвета, чтобы выбирать из разных цветов для своего текста, или вы можете нажать третью кнопку, где вы можете изменить шрифт. Поэтому я только начал, и у меня есть эта проблема: если я нажму кнопку клавиатуры, клавиатура должна появиться, и текстовое изображение должно автоматически подняться на 216 пикселей (высота клавиатуры). У меня есть код ниже:перемещение UITextField после появления клавиатуры

111 в кадре .origin - y-координаты, где он должен двигаться.

- (IBAction)keyBoardAction:(id)sender { 

CGRect frame = _textField.frame; 
frame.origin.y = 111; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
_textField.frame = frame; 
[UIView commitAnimations]; 

[_textField becomeFirstResponder]; 

} 

Потому что это не работает, я запустить приложение, не делая TextField firstResponder так, что клавиатура не будет блокировать мой взгляд, и я мог наблюдать за TextField в течение всего процесса. Когда я запустил приложение и нажал кнопку клавиатуры, текстовое поле сначала опустилось ниже экрана, а затем снова переместилось вверх в ту же позицию, что и в начале.

ответ

1
- (void)registerNotifications 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillShow:) 
               name:UIKeyboardWillShowNotification 
               object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillBeHidden:) 
               name:UIKeyboardWillHideNotification 
               object:nil]; 
} 


- (void) keyboardWillShow:(NSNotification *)notification 
{ 
    NSDictionary *userInfo = [notification userInfo]; 

    NSTimeInterval duration = userInfo ? [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue] : 1.0; 

    CGRect keyboardEndFrame; 
    [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame]; 

    CGRect newFrame = _textField.frame; 
    newFrame.origin.y -= keyboardEndFrame.size.height; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration: duration]; 
    _textField.frame = newFrame; 
    [UIView commitAnimations]; 

} 

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

  • Нет связанных вопросов^_^