У меня есть приложение на основе представления, и в одном из подзонов есть UIScrollView. Я написал обработчики, чтобы настроить размер прокрутки, когда клавиатура появляется и исчезает. Я хотел бы, чтобы клавиатура была уволена, когда пользователь покидает представление, поэтому я звоню [currentField resignFirstResponder]
в viewWillDisappear
. Это отклоняет клавиатуру, но не вызывает обработчик для изменения размера прокрутки (когда я вызываю тот же код в других местах, он делает это). Какие-либо предложения?iOS Dismiss Keyboard on View Change
EDIT: Это обработчики, которые я использую:
-(void) keyboardWasShown:(NSNotification*) notification
{
if(keyboardShown)
return;
NSDictionary* info=[notification userInfo];
NSValue* value=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize=[value CGRectValue].size;
CGRect viewFrame=[scrollView frame];
viewFrame.size.height-=keyboardSize.height;
scrollView.frame=viewFrame;
keyboardShown=YES;
}
-(void) keyboardWasHidden:(NSNotification*) notification
{
NSDictionary* info=[notification userInfo];
NSValue* value=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize=[value CGRectValue].size;
CGRect viewFrame=[scrollView frame];
viewFrame.size.height+=keyboardSize.height;
scrollView.frame=viewFrame;
keyboardShown=NO;
}
Когда я звоню [currentField resignFirstResponder]
где-нибудь еще, он вызывает обработчик без проблем.
Можете ли вы показать код обработчиков для размера просмотра прокрутки ? Почему вы ожидаете, что их автоматически назовут? – Jim
Где вы снимаете себя как наблюдателя для этих уведомлений? – NJones
Ваш код работает для меня. Какой тип перехода вы используете для части «пользователь выходит из представления»? – NJones