2014-01-16 3 views
0

Я пытаюсь переместить мой просмотр вверх, когда клавиатура появляется, а затем снова исчезает. В первый раз, когда появляется клавиатура, она работает по назначению. Когда я нажимаю «Готово», клавиатура исчезает и вид перемещается назад. Однако после этого первоначального редактирования щелчок на текстовом файле ничего не делает. Клавиатура вообще не появляется.UITextField: клавиатура не появляется после первого редактирования

В viewDidLoad методе я написал:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; 

и реализованы следующие делегаты:

- (void)keyboardDidShow:(NSNotification *)notification 
{ 
    //Assign new frame to your view 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    NSDictionary* info = [notification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
    [self.view setFrame:CGRectMake(0,-kbSize.height,320,460)]; 

    [UIView commitAnimations]; 

} 
-(BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [self.view endEditing:YES]; 
    return NO; 
} 

-(void)keyboardDidHide:(NSNotification *)notification 
{ [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    [self.view setFrame:CGRectMake(0,0,320,460)]; 
    [UIView commitAnimations]; 
} 

ответ

0

Вы должны реализовать resignFirstResponder на вашем UITextField так, что клавиатура может быть запущен снова. В своей реализации, что вы могли бы сделать, это добавить следующую строку в ваш метод textFieldShouldReturn:

[textfield resignFirstResponder]; 
0

Если вы изменили метод -textFieldShouldReturn к следующему, он должен работать.

-(BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
} 

За документации:

Возвращая НЕТ, вы можете запретить пользователю переключиться на другой элемент управления

Возвращение NO, сохраняет фокус на контроле, так что я предполагая, что в следующий раз, когда вы коснетесь textFiled, ничего не происходит, потому что система думает, что управление уже сфокусировано.

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