iPad仮想キーボードが表示されたら、自分のビュー内のテキストフィールドの一部をカバーします。キーボードが表示されたらViewControllerを上に移動する方法はありますか?キーボードがiPadに表示されたら、どのように上に移動しますか?
答えて
あなたのオブジェクトをUIScrollView
に置くことをお勧めします。キーボードが表示されたら、scrollRectToVisible:
を使用できます。
[scroller scrollRectToVisible:frame animated:YES];
私は自分のアプリケーションの1つのためにこのコードを書いています。
TextFieldの位置を自動的に検出し、それに応じてベースビューをスクロールします。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self animateTextField:textField up:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField:textField up:NO];
}
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
CGPoint temp = [textField.superview convertPoint:textField.frame.origin toView:nil];
UIInterfaceOrientation orientation =
[[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait){
if(up) {
int moveUpValue = temp.y+textField.frame.size.height;
animatedDis = 264-(1024-moveUpValue-5);
}
}
else if(orientation == UIInterfaceOrientationPortraitUpsideDown) {
if(up) {
int moveUpValue = 1004-temp.y+textField.frame.size.height;
animatedDis = 264-(1004-moveUpValue-5);
}
}
else if(orientation == UIInterfaceOrientationLandscapeLeft) {
if(up) {
int moveUpValue = temp.x+textField.frame.size.height;
animatedDis = 352-(768-moveUpValue-5);
}
}
else
{
if(up) {
int moveUpValue = 768-temp.x+textField.frame.size.height;
animatedDis = 352-(768-moveUpValue-5);
}
}
if(animatedDis>0)
{
const int movementDistance = animatedDis;
const float movementDuration = 0.3f;
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
if (orientation == UIInterfaceOrientationPortrait){
baseViewController.view.frame = CGRectOffset(baseViewController.view.frame, 0, movement);
}
else if(orientation == UIInterfaceOrientationPortraitUpsideDown) {
baseViewController.view.frame = CGRectOffset(baseViewController.view.frame, 0, movement);
}
else if(orientation == UIInterfaceOrientationLandscapeLeft) {
baseViewController.view.frame = CGRectOffset(baseViewController.view.frame, 0, movement);
}
else {
baseViewController.view.frame = CGRectOffset(baseViewController.view.frame, 0, movement);
}
[UIView commitAnimations];
}
}
ありがとう!!あなたのコードのために: – Guerrix
それはgr8..thanksを動作させます。 – Developer
コメントありがとうございました。 – ValayPatel
は他のシフトビューは、前の位置に常にある、ときNO =アップ状態のための文の「if」if(animatedDis>0 || !up)
にValayPatelコードを変更できます。
元のコードはanimatedDisがプロパティであることを意図していたため、編集が終了すると> 0の値が保持され、ビューが元の位置にアニメートされます。 – Noam
- 1. スイフト:キーボードが表示されたらUILabelを上に移動
- 2. キーボードが表示されたときにスクロールテーブルの行が上に移動BUG
- 3. キーボードが上に移動し、
- 4. キーボードが表示されているときにテーブルビューセルを上に移動する
- 5. キーボードがiPadに表示されるときにポップオーバーが左上隅に縮む
- 6. ソフトキーボードが表示されたらレイアウトを上に移動
- 7. IOS:キーボードが表示されているときにTextFieldを上に移動
- 8. キーボードが表示されているときにScrollViewが自動的に上に移動しない
- 9. キーボードが表示されているときにUIViewを移動
- 10. iPad WebApp:動画の上にトランジションボタンが表示されない
- 11. キーボードが表示されたときの移動ビューのスクロール
- 12. キーボードが表示されてもこの入力ビューを上に移動して消えないようにしようとしています
- 13. スティッキーボタンがビューの下とキーボードの上に表示されます
- 14. モーダルUIViewControllerは常にiPad上でフルスクリーン表示されます。どうして?
- 15. setTextIsSelectableはどのようにキーボードが表示されないようにしますか?
- 16. uitextviewキーボードがuitoolbarの上に表示されます
- 17. キーボードの上にタブがイオン性で表示されます3
- 18. キーボードが表示されるまでヒントを上に移動しないでください - android.support.design.widget.TextInputLayout
- 19. キーボードが表示されたときにテーブルビューを移動するためにコンテンツが挿入される
- 20. キーボードが現れたときにUITextFieldを上に移動
- 21. キーボードが現れたときにUITextFieldを上に移動
- 22. スウィフト - 表示時にキーボード上でテキストフィールドを移動
- 23. iPadのローカルディレクトリからPDFファイルをどのように表示しますか?
- 24. フォーカスがキーボードに表示されます。
- 25. ファドダインまたは表示時にテキストが上に移動する
- 26. ソフトキーボードが表示されたときにツールバーが上に移動する
- 27. ツールバーがキーボードの上に表示されません
- 28. キーボードがXcodeでポップアップしたときにフレームを上に移動
- 29. iOS/iPadモバイルSafari - onFocusイベントの前にJavaScriptのトリガーコードが表示され、画面上のキーボードが開きます
- 30. divが表示されているかどうか確認します。表示されている場合は、ウィンドウの上部に移動します。
これは新しくて、これはどうやって簡単な例がありますか? ありがとう! – Guerrix
本当にありがとう、ありがとう。 – Guerrix