动态监听UITextField键盘的弹出与退出

  UITextField中键盘的弹出与隐藏状态通过系统的通知名称UIKeyboardWillShowNotification、UIKeyboardWillHideNotification来获取

UITextField中键盘的退出方法常用的有两种:1.点击空白处回撤键盘,2.点击Return建回撤键盘。

 

下面附上键盘的监听方法和键盘退出方法。

1.首先设置宏定义取屏幕宽高

 

#define WIDTH [[UIScreen mainScreen] bounds].size.width

#define HEIGHT [[UIScreen mainScreen] bounds].size.height

2.让控制器遵循协议

@interfaceViewController ()<UITextFieldDelegate>

3.设置属性值

@property (nonatomic,strong)UITextField * textField;

//记录下textField的原始中心点

@property (nonatomic)CGPoint center;

4.附上UITextField的创建与监听键盘的方法

 //创建对象
   self.textField = [[UITextField alloc]initWithFrame:CGRectMake(50,HEIGHT - 100,WIDTH -100 ,50)];
    //设置代理
    self.textField.delegate =self;
    //占位提醒字符
    self.textField.placeholder =@"请输入内容";
    //边缘风格
    self.textField.borderStyle = UITextBorderStyleRoundedRect;
    //键盘类型
    self.textField.keyboardType = UIKeyboardTypeDefault;
    //设置字体
    self.textField.font = [UIFont systemFontOfSize:25];
   //获取键盘中心点
    self.center =self.textField.center;
    [self.view addSubview:self.textField];

   //创建观察者,监听键盘的弹出
 [NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name: UIKeyboardWillShowNotification object:nil];

    //创建观察者,监听键盘的隐藏   [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name:UIKeyboardWillHideNotification object:nil];

5.keyboardHandle:的方法


- (void)keyboardHandle:(NSNotification *)notify{
   //获取文本输入框中心点坐标
    CGPoint center =self.textField.center;
   //取出键盘的尺寸值
    NSValue *rectValue = notify.userInfo[UIKeyboardFrameBeginUserInfoKey];
    //官方提供了直接从NSValue转化为CGRect的函数
    CGRect rect = rectValue.CGRectValue;
   //获取键盘的高度
    CGFloat height = rect.size.height;
   //获取通知的名字
    NSString *nameStr = notify.name;
   //判断是哪个通知,做出相应的处理
    //键盘弹出
    if ([nameStr isEqualToString:UIKeyboardWillShowNotification]) {
        center.y =self.center.y - height;
    }else{//键盘退出
        center = self.center;
    }
   self.textField.center = center;

}
6.键盘退出的方法

//F1:点击屏幕空白处键盘退出

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [self.textField resignFirstResponder];

}

 

#pragma mark - UITextFieldDelegate

//F2:点击Return键键盘退出

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

    [textField resignFirstResponder];

    returnYES;

}
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值