2015-12-15 2 views
0

Стандартное поведение, когда ячейка содержит текстовое поле и становится первым ответчиком, автоматически устанавливает смещение содержимого коллекции, чтобы предотвратить скрытие текстового поля.Как изменить анимацию UICollectionView с помощью клавиатуры

Why UICollectionView offset changes when keyboard appears

Это происходит автоматически, и это ожидаемое поведение.

Как настроить анимацию ячейки вверх, когда клавиатура подходит?

ответ

0
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 

с этим и может переключать UICollectionView высота соответственно

+0

пожалуйста, прочитайте Edit, благодаря – user1447414

0

Вы должны осуществлять UIScrollViewDelegate и UITextFieldDelegate и добавить:

- (void)viewDidLoad 
{  
    [self addNotificationObserver]; 
} 

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [self removeObservers]; 

} 


-(void)addNotificationObserver 
{ 
    [[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 *)notification 
{ 
    CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    [UIView animateWithDuration:0.1 animations:^{ 
        CGRect f = self.view.frame; 
        f.origin.y = -keyboardSize.height; 
        self.view.frame = f; 
       }]; 
    } 

-(void)keyboardWillHide:(NSNotification *)notification 
{ 
     [UIView animateWithDuration:0.1 animations:^{ 
        CGRect f = self.view.frame; 
        f.origin.y = 0.0f; 
        self.view.frame = f; 
       }]; 
} 

-(void)removeObservers 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIKeyboardWillShowNotification" object:nil]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIKeyboardWillHideNotification" object:nil]; 
} 
+0

ты испытал это с UICollectionView и а UITextField в ячейке? – user1447414

+0

Да и отлично работает. –

+0

Я внимательно посмотрел на ваш ответ, и он устанавливает представление, содержащее коллекцию. Я думаю, что это может работать да. Но мой вопрос - это больше о том, как получить доступ к деталям анимации и изменить их – user1447414

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