2013-03-08 1 views
0

Я использую проект this образца и то, что я хочу сделать, это то, что когда вы положили UITextField на представлении, когда UITextField в под клавиатурой, вид перемещается вверх маленький.ударяя с UIScrollView и продвигаясь вверх вид при использовании клавиатуры

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

Также вы можете прокручивать вправо и влево, когда клавиатура выскочила, любая идея, как я могу это решить? Here - мой проект, где я добавил их обоих вместе.

ответ

2

В TPKeyboardAvoidingScrollView.m есть метод (keyboardWillHide :), который вызывается, когда клавиатура скрывается. В этом методе смещение содержимого scrollview устанавливается на CGPointZero, поэтому ваш scrollview получает доступ к первому виду контроллера.

- (void)keyboardWillHide:(NSNotification*)notification { 
    _keyboardRect = CGRectZero; 
    _keyboardVisible = NO; 

    // Restore dimensions to prior size 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; 
    [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; 
    self.contentInset = _priorInset; 
    //self.contentOffset = CGPointZero;//Replacing this with below line 
    self.contentOffset = CGPointMake(self.contentOffset.x, 0); 
    [self setScrollIndicatorInsets:self.contentInset]; 
    _priorInsetSaved = NO; 
    [UIView commitAnimations]; 
} 

Чтобы остановить прокрутку при редактировании textfield-

- (void)keyboardDidShow:(NSNotification*)notification { 
    [self setScrollEnabled:NO]; 
    //existing code 
} 

- (void)keyboardWillHide:(NSNotification*)notification { 
    [self setScrollEnabled:YES]; 
    //existing code with modification of content offset 
} 

Имейте в виду, что это может повлиять на других взглядов, в которых используется объект TPKeyboardAvoidingScrollView в.

+0

Спасибо, и как я могу остановить его, чтобы они могли прокручивать вправо и влево, когда клавиатура выскочила? – Shinonuma

+1

обновленный ответ, чтобы избежать прокрутки во время редактирования –

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