很多情况下,我们在处理文本框的时候,都得考虑到,如果键盘出现了,会不会将键盘给盖住。如果盖住了,我们就得调整一下文本框的位置。那我们来设置一下我们的思路。首先,我们要知道键盘的坐标是怎么处理的。如下图所示:
键盘是在下面直接弹出来的,我们需要知道键盘的高度。键盘的高度,我们可以在键盘监听事件里面读取,键盘的高度我们知道了,我们就能够知道键盘的坐标,高度确定以后,我们是不是可以用键盘的坐标和文本框的坐标进行做比较,那么接下来,我们来处理怎么样才能判断出文本框的高度。
下面我们来说一说,一个文本框的情况:
如果文本框要编辑的时候,弹出了键盘,键盘确挡住了文本框,那么这个时候,我们就必须调整文本框的位置。然后让文本框显示在键盘的上面,我们只需要让文本框的坐标Y减少就可以了,在这里可以减少键盘的高度,代码如下:
namespace keyboard
{
public partial class ViewController : UIViewController
{
//
private NSObject kbdWillShow, kbdDidHide;
public ViewController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
UITextField text = new UITextField (new CoreGraphics.CGRect (50, 600, 250, 20));
//键盘的提醒文字
text.Placeholder = "请输入内容";
//键盘的风格
text.KeyboardAppearance = UIKeyboardAppearance.Default;
//边框宽度
text.Layer.BorderWidth = 1f;
//边框颜色
text.Layer.BorderColor = UIColor.DarkGray.CGColor;
//设置键盘的类型和收回按键
text.KeyboardType = UIKeyboardType.Default;
text.ReturnKeyType = UIReturnKeyType.Done;
//键盘的展开
kbdWillShow = UIKeyboard.Notifications.ObserveWillShow ((s, e) => {
CoreGraphics.CGRect kbdBounds=e.FrameEnd;
CoreGraphics.CGRect textFrame=text.Frame;
textFrame.Y-=kbdBounds.Height;
text.Frame=textFrame;
});
//键盘的收起,回到初始状态
kbdDidHide=UIKeyboard.Notifications.ObserveDidHide((s,e)=>{
CoreGraphics.CGRect kbdBounds=e.FrameEnd;
CoreGraphics.CGRect textFrame=text.Frame;
textFrame.Y+=kbdBounds.Height;
text.Frame=textFrame;
});
//响应键盘的返回事件
text.ShouldReturn = delegate(UITextField textField) {
return text.ResignFirstResponder ();
};
this.View.AddSubview (text);
}
代码已经很清楚了,相信大家一看就清楚了,下面看一看效果,图片如下: