ビューベースのアプリケーションがあり、サブビューの1つにUIScrollViewがあります。キーボードが表示されたり消えたりしたときにスクロールビューのサイズを調整するハンドラーを作成しました。ユーザーがビューを離れるときにキーボードを閉じたいので、を呼び出し[currentField resignFirstResponder]
ますviewWillDisappear
。これによりキーボードが閉じられますが、ハンドラーを呼び出してスクロールビューのサイズを変更することはありません(他の場所で同じコードを呼び出すと、呼び出されます)。助言がありますか?
編集:これらは私が使用するハンドラーです:
-(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]
と、問題なくハンドラーが呼び出されます。