私はUITextFieldを持っています。ソフトキーボードは、クリックするとUITextFieldをカバーします。
レイアウトを上に移動してキーボードの上に表示するにはどうすればよいですか?
ありがとうございます。ソフトウェアキーボードがXamarin.iOSに表示されているときにレイアウトを移動する方法
1
A
答えて
0
は、サンプルimplimentationをテキストボックス
private UIView activeview; // Controller that activated the keyboard
private float scroll_amount = 0.0f; // amount to scroll
private float bottom = 0.0f; // bottom point
private float offset = 10.0f; // extra offset
private bool moveViewUp = false; // which direction are we moving
のviewDidLoadのキーボードオブザーバー()を収容するためのコントローラ
変数を参照してください。
// Keyboard popup
NSNotificationCenter.DefaultCenter.AddObserver
(UIKeyboard.DidShowNotification,KeyBoardUpNotification);
// Keyboard Down
NSNotificationCenter.DefaultCenter.AddObserver
(UIKeyboard.WillHideNotification,KeyBoardDownNotification);
まずはKeyboardUpNotificationメソッドです。基本的には、コントロールがキーボードによって隠されているかどうかを計算し、そうであれば、コントロールを表示するためにビューを移動する必要があるかどうかを計算し、それを移動します。
private void KeyBoardUpNotification(NSNotification notification)
{
// get the keyboard size
RectangleF r = UIKeyboard.BoundsFromNotification (notification);
// Find what opened the keyboard
foreach (UIView view in this.View.Subviews) {
if (view.IsFirstResponder)
activeview = view;
}
// Bottom of the controller = initial position + height + offset
bottom = (activeview.Frame.Y + activeview.Frame.Height + offset);
// Calculate how far we need to scroll
scroll_amount = (r.Height - (View.Frame.Size.Height - bottom)) ;
// Perform the scrolling
if (scroll_amount > 0) {
moveViewUp = true;
ScrollTheView (moveViewUp);
} else {
moveViewUp = false;
}
}
キーボードダウンイベントは単純です。ビューが移動された場合は、それを逆にします。
private void KeyBoardDownNotification(NSNotification notification)
{
if(moveViewUp){ScrollTheView(false);}
}
ビューをスクロールすると、ビューがアニメーション表示されます。
private void ScrollTheView(bool move)
{
// scroll the view up or down
UIView.BeginAnimations (string.Empty, System.IntPtr.Zero);
UIView.SetAnimationDuration (0.3);
RectangleF frame = View.Frame;
if (move) {
frame.Y -= scrollamount;
} else {
frame.Y += scrollamount;
scrollamount = 0;
}
View.Frame = frame;
UIView.CommitAnimations();
}
3
あなたはhttps://github.com/TheEightBot/Xamarin.IQKeyboardManager
Xamarin Nugetを結合IOS xamarin https://github.com/hackiftekhar/IQKeyboardManager
を使用することができます。 https://www.nuget.org/packages/Xamarin.IQKeyboardManager/
+0
驚くべき - 彼らがこれを作成してうれしい – cfl
関連する問題
- 1. Nativescript:ソフトウェアキーボードがiOSに表示されているときに表示を折りたたむ方法は?
- 2. フラグメントが初めてロードされたときにソフトウェアキーボードが表示されない
- 3. キーボードが表示されているときにUIViewを移動
- 4. キーボードが表示されているときにテーブルビューセルを上に移動する
- 5. キーボードがConstraintLayoutの内側に表示されているときにビューを移動する方法
- 6. コントロールが表示されているときにテキストボックスにフォーカスを移動
- 7. IOS:キーボードが表示されているときにTextFieldを上に移動
- 8. ソフトキーボードが表示されたらレイアウトを上に移動
- 9. Android:移動したときにオフスクリーンビットマップが表示される
- 10. RDLCがサーバーに移動されたときにサブレポートが表示されない
- 11. レイアウトを表示するときにタイトルアプリを非表示にする方法は?
- 12. キーボードが表示されているときのレイアウトの問題
- 13. キーボードが表示されているときにScrollViewが自動的に上に移動しない
- 14. ソフトキーボードが表示されているときにレイアウトを変更します。
- 15. Xamarin.iOSシミュレータが表示されない
- 16. AdMob Interstitalが表示されたときにナビゲーションバーが移動
- 17. ソフトキーボードが表示されたときにツールバーが上に移動する
- 18. SnackBarがCoordinatorLayoutに表示されるときにビューを移動します。
- 19. スクロールバーが表示されるときにページコンテンツを右に移動しますか?
- 20. ソフトウェアキーボードが表示されているかどうか調べる方法はありますか?
- 21. 動的に作成されたレイアウトが表示されない
- 22. キーボードがユニティ入力フィールドに表示されたときにパネルを移動する方法
- 23. Xamarin.iOSでSideBarControllerを使用するときに新しい画面に移動する方法
- 24. オーバーレイが表示されたときにnavbarを非表示にする方法
- 25. ブラウザにパラメータが表示されていないページに移動する
- 26. カーソルの表示方法を移動するときは?
- 27. ViewControllerを移動したときにタブバーとナビゲーションバーが表示されない
- 28. Androidレイアウトにギャップが表示される
- 29. ソフトキーボードが表示されているときにダイアログが表示されます
- 30. RecyclerViewにレイアウトを表示する方法
こんにちは、私はあなたのソリューションを使用して問題に遭遇しました。私の計算されたscroll_amountは常に負である...任意のアイデア私が間違っていること... Thx – Christoph