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