2016-03-27 7 views
0

Ich habe diesen Code bekam zu schrumpfen und meine Steuerelemente zu bewegen, wenn die Tastatur öffnet:ändern UI Steuerhöhe nach Tastatur

-(void)keyboardWillShow:(NSNotification *)notification { 
    NSValue *value = [notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; 
    NSTimeInterval interval = 0; 
    [value getValue:&interval]; 

    CGSize keyboardSize = [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    [UIView animateWithDuration:interval animations:^{ 
     self.composeBarBottomConstraint.constant = (-1) * keyboardSize.height; 
     [self.view layoutIfNeeded]; 
    }]; 
} 

Das funktioniert perfekt mit der normalen Tastatur, aber wenn ich die Emoji-Tastatur-Taste tippen die Die Position der UI-Steuerelemente ist nicht dort, wo sie sein sollte (Offset nach oben) und springt statt zu animieren - was mich glauben lässt, dass die Werte, die ich von [notification userInfo] abrufe, mit der Emoji-Tastatur falsch sind.

Irgendwelche Ideen, was hier vor sich geht?

+0

Was passiert, wenn Sie versuchen, 'UIKeyboardFrameEndUserInfoKey' anstelle von' UIKeyboardFrameBeginUserInfoKey' zu verwenden? – Azat

+0

@Azat es funktioniert tatsächlich! Können Sie erklären warum? – Erik

+0

Ich habe dies als Antwort hinzugefügt – Azat

Antwort

0

Ersetzen Sie UIKeyboardFrameBeginUserInfoKey zu UIKeyboardFrameEndUserInfoKey. Dieser Schlüssel enthält die Informationen zur Tastaturgröße nach allen Animationen, die das System ausführt. Sie können mehr lesen in this answer