Похоже, вы дали правильные ограничения все, что вам нужно сделать сейчас, чтобы сделать выходное ограничение центра y и изменить его на клавиатуре, показать/скрыть события, которые вы можете захватить с помощью клавиатурыDidShow/keyboardWillShow и keyboardDidHide/keyboardWillHide уведомлений. что вы также можете добавить классные эффекты анимации для этих изменений. Попробуйте, дайте мне знать, если вам нужен пример.
Edit:
добавить ViewController в качестве наблюдателя за два уведомления:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidHide:)
name:UIKeyboardDidHideNotification
object:nil];
Теперь предположим, что имя вашего ограничения является "constraintForTopSpace", а затем добавить два метода уведомлений:
- (void)keyboardWasShown:(NSNotification *)notification {
// Get the size of the keyboard.
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//Given size may not account for screen rotation
int height = MIN(keyboardSize.height,keyboardSize.width);
// Here you can set your constraint's constant to lift your container up.
[UIView animateWithDuration:0.5 animations:^{
[constraintForTopSpace setConstant:constraintForTopSpace.constant - height];
[self.view layoutIfNeeded];
}];
}
- (void)keyboardDidHide:(NSNotification *)notification {
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
int height = MIN(keyboardSize.height,keyboardSize.width);
// Here you can set your constraint's constant to move your container down.
[UIView animateWithDuration:0.5 animations:^{
[constraintForTopSpace setConstant:constraintForTopSpace.constant + height];
[self.view layoutIfNeeded];
}];
}
И вы также можете использовать UIKeyboardWillShowNotification
/UIKeyboardWillHideNotification
notificat иона, они будут активированы до того, как клавиатура появится на экране, что соответствует вашим требованиям.
Здесь добавление анимации придаст плавный внешний вид. ;)
Использование https://github.com/hackiftekhar/IQKeyboardManager будет управлять ПОлОжЕНИЕ автоматически – kb920
Я хочу сделайте это самостоятельно без третьей стороны. –
@RahulVyas вы могли бы предоставить свое решение или принятый ответ? – Balasubramanian