iphone键盘的回收 && 键盘弹起遮挡UITextFiled等空间问题解决

<span style="background-color: rgb(255, 255, 255);"><span style="font-family:Arial, Helvetica, sans-serif;"> </span><strong><span style="font-family:Microsoft YaHei;font-size:18px;">iPhone的键盘唤醒容易 想要回收却有点小问题 Xcode并没有固定的函数或是固定的机制对键盘进行回收 想要做到键盘的回收还需要自己一点一点的敲代码。</span></strong></span>

  下面几项键盘回收的方法是大家比较常用的,1~3项都是日常中大家经常使用的方法 就是通过触发事件来完成对键盘的回收 但是在我们日常使用手机的习惯中 我们更倾向于点击除textField 之外的地方来回收键盘 这就用到了第4种方法 点击空白处进行键盘的回收


  1. [self.view endEditing:YES];

 2.[textField resignFirstResponder];
 3.代理实现return按键退出键盘
 3.1在.h文件中添加协议

<UITextFieldDelegate>

 3.2在需要的textField写代理

textField.delegate = self;

 3.3 重写监控程序

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

    [textField resignFirstResponder];

    return YES;

}

 4在屏幕上 点击除textField之外的地方退出键盘
 4.1在屏幕的初始化中(包含textField)添加点击事件

UITapGestureRecognizer *tap = [[UITapGestureRecognizer allocinitWithTarget:self action:@selector(keyBoard)];

//触摸屏幕的手指数

tap.numberOfTapsRequired = 1;

// 触摸次数

tap.numberOfTouchesRequired = 1;

[self.window addGestureRecognizer:tap];

 4.2写触碰已发的事件

- (void) keyBoard

{

    [self.window endEditing:YES];

}


 

  相信大家都用过微信 微信的UITextField都是放在屏幕的下方 当触碰输入框的时候 会自动弹出键盘 并且UITextField会随着键盘而移动在屏幕上方的位置(这里我们先忽略屏幕上面聊天记录也随着上升的现象) 以下两种方法分别是我解决这一问题的方法 

#pragma mark 方法一

1.通过修改textField的fram来进行改变页面布局
1.1为需要改变位置的textField的设置触发方式

_pasIn = [[UITextField allocinitWithFrame:CGRectMake(14060015040)];

_pasIn.placeholder = @"请输入密码";

[_pasIn addTarget:self action:@selector(textFieldShouldBeginEditing:forControlEvents:UIControlEventEditingDidBegin];

1.2在.h文件中添加<UITextFieldDelegate> 代理 

1.3重写textField自带方法


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

{

// 动画输出

    [UIView animateWithDuration:0.25 animations:^{

// 不能直接对textField.frame进行修改

        CGRect fram = textField.frame;

// 键盘高度为216

        fram.origin.y = 600 - 216;

        textField.frame = fram;

    }];

    return YES;

}

1.4键盘回收 按照需求进行设置 只需要在触发事件的时候 实现将textField的fram.origin.y 改成你原来坐标即可
我采用的是点击return按钮进行回收键盘

1.5注意 本方法是知道系统弹出的键盘类型进行修改的 因为中英文键盘还有数字键盘的高度都不相同


  我们都知道 Xcode给我们提供的键盘种类很多 如果按照第一种方法来进行设计 代码会非常的多。如果加入第三方的键盘 那就更是数不胜数了,所以我建议大家使用第二种方法,动态获取键盘的高度

#pragma mark 方法二

2.根据用户使用不同的键盘来对textField进行调整
2.1设置键盘弹起监测

[NSNotificationCenter keyBoardViewaddObserver:self selector:@selector(keyboard:name:UIKeyboardWillShowNotification object:nil];

2.2进行方法实现

-(void)keyboard:(NSNotification *)note

{

   // 大家可以打印一下 note 它返回的是键盘的fram center bounds等信息

    NSDictionary *info = [note userInfo];

    CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKeyCGRectValue].size;


    // 这里在获取键盘的高度之后 对UITextField的位置进行修改

     CGFloat changeY = (460 - keyboardSize.height) - nameField.frame.size.height;


    nameField.frame = CGRectMake(35, changeY, 25035);

}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值