わかりました、これがAppleの例での方法です(プロジェクト名が何であったかはもう覚えていません):
1. キーボード通知を登録します (キーボードは、表示されるか非表示になるたびに通知を送信します)。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
2.キーボードのサイズを取得し(高さに関心があります)、そのポイントがビューに含まれていない場合はスクロールします。
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
// If active text field is hidden by keyboard, scroll it so it's visible
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
CGPoint point;
point = CGPointMake(0, activeTextField.frame.origin.y + activeTextField.frame.size.height);
if (!CGRectContainsPoint(aRect, point ))
{
CGPoint scrollPoint = CGPointMake(0.0, activeTextField.frame.origin.y+activeTextField.frame.size.height-kbSize.height);
[scrollView setContentOffset:scrollPoint animated:YES];
}
キーボードを非表示にするときは逆のことを忘れずに、別のView Controllerにプッシュする場合はオブザーバーを削除してください。この例は UIScrollView のテキスト フィールドで使用されていますが、簡単に変更できると確信しています。
個人的には、Web 側も管理する場合は、幅 320 ピクセルの Web ページを作成し、webView の sizeToFit を設定し、それを UIScrollView の上に追加して、そこからスクロールを管理することを好みます。textFields の場合、javascript を使用して選択した textField のコンテナーを取得し、その座標を取得します。