多くのトピックを読みましたが、解決策が見つかりません:-(多分あなたが助けることができます!
私のストーリーボード (iPad アプリ用) には、次のものがあります: - 初期シーンであるナビゲーション コントローラー - 次の階層を含むビュー コントローラーを開くセグエ:プロンプト付きバー -> マップ ビュー - ナビゲーション アイテム -> バー ボタン アイテム
検索バーは下部のツールバーにあり、その結果、クリックするとキーボードが表示され、検索バーが非表示になります。すべてを上にスクロールして検索バー (ナビゲーション、マップ、ツールバーなど) を表示したいと考えています。
キーボード通知を登録し、IOS のドキュメントに記載されているコードを実装しました。
- (void)keyboardWasShown:(NSNotification*)aNotification
{ NSDictionary* info = [aNotification userInfo]; CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your application might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height);
[scrollView setContentOffset:scrollPoint animated:YES];
}
}
このコードが実行されると、何かが発生したように見え (マップ ビューにマップではなく白いビューが表示されます)、キーボードは表示されますが、検索バーはまだ表示されません。
ビュー階層に問題はありますか? ナビゲーションコントローラーに埋め込まれているためですか?私はこの問題について少し迷っています。階層に scrollView を配置する前に、単純なビューを使用していましたが、検索バーの問題により、単純なビューをスクロール ビューに置き換えました。あなたの助けは非常に高く評価されます! ありがとう、
セバスチャン。