ios 键盘覆盖UI问题

来源:互联网 发布:python项目实例 编辑:程序博客网 时间:2024/05/05 17:34

在通知中心添加如下俩个通知,

//键盘显示

NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.DidShowNotification, KeyBoardUpNotifiaction);

//键盘隐藏

NSNotificationCenter.DefaultCenter.AddObserver (UIKeyboard.DidHideNotification, keyBoardDownNotification);

UIView activeView;float scroll_amount=0.0f;float bottom=0.0f;float offset=20.0f;bool moveViewUp=false;/// <summary>/// 获取相应控件的view/// </summary>/// <param name="main_view">Main view.</param>void GetActiveView(UIView main_view){foreach (var view in main_view.Subviews) {if (<span style="font-family: Arial, Helvetica, sans-serif;">view</span>.IsFirstResponder) {activeView = view;}}}void KeyBoardUpNotifiaction(NSNotification notification){RectangleF r = UIKeyboard.BoundsFromNotification (notification);GetActiveView (this.View);if (activeView==null) {return;}bottom = (activeView.Frame.Y+activeView.Frame.Height+offset);if (scroll_amount>0) {return;}scroll_amount = (r.Height-(View.Frame.Size.Height-bottom));if (scroll_amount > 0) {moveViewUp = true;scrollTheView( moveViewUp);} else {moveViewUp = false;}}void keyBoardDownNotification(NSNotification notifiaction){if (moveViewUp||scroll_amount>0f) {scrollTheView (false);}}void scrollTheView(bool move){UIView.BeginAnimations (string.Empty, System.IntPtr.Zero);UIView.SetAnimationDuration (0.3);RectangleF frame = this.ui_view.Frame;if (move) {frame.Y -= (scroll_amount);} else {frame.Y += (scroll_amount);scroll_amount = 0;}this.ui_view.Frame = frame;UIView.CommitAnimations ();}




0 0
原创粉丝点击