iOS键盘监听以及获取键盘高度

  在文本输入时,界面会弹出键盘。有时,当文本输入框过低,被键盘遮挡,使用户无法看见输入框文本内容,这就使得用户体验过低。

  所以需要我们对键盘进行监控并获取键盘高度,调节界面或文本框高度进行处理。如下图,文本输入框过低的情况:

     

  像这样的情况,如若未作处理,输入框就会被键盘遮挡。这时,我们需要监听键盘事件,获取键盘高度,对文本框视图进行高度调整:

 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()<UITextFieldDelegate>
 4 @property (weak, nonatomic) IBOutlet UITextField *inputField;
 5 // 拖线获取的视图约束对象
 6 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *toBottom;
 7 
 8 @end
 9 
10 @implementation ViewController
11 
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14     
15     self.inputField.delegate = self;
16  
17     // 添加通知监听见键盘弹出/退出
18     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardAction:) name:UIKeyboardWillShowNotification object:nil];
19     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardAction:) name:UIKeyboardWillHideNotification object:nil];
20 }
21 
22 // 点击非TextField区域取消第一响应者
23 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
24     [self.inputField resignFirstResponder];
25 }
26 
27 // 点击键盘Return键取消第一响应者
28 - (BOOL)textFieldShouldReturn:(UITextField *)textField{
29     [self.inputField resignFirstResponder];
30     return  YES;
31 }
32 
33 // 点击按钮取,消第一响应者
34 - (IBAction)okAction:(UIButton *)sender {
35     [self.inputField resignFirstResponder];
36 }
37 
38 // 键盘监听事件
39 - (void)keyboardAction:(NSNotification*)sender{
40     // 通过通知对象获取键盘frame: [value CGRectValue]
41     NSDictionary *useInfo = [sender userInfo];
42     NSValue *value = [useInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
43     
44     // <注意>具有约束的控件通过改变约束值进行frame的改变处理
45     if([sender.name isEqualToString:UIKeyboardWillShowNotification]){
46         self.toBottom.constant = [value CGRectValue].size.height;
47     }else{
48         self.toBottom.constant = 0;
49     }
50 }
51 
52 - (void)didReceiveMemoryWarning {
53     [super didReceiveMemoryWarning];
54 }
55 
56 @end

  像这样处理过后,输入框视图的位置就可以随键盘的弹出/退出而做相应的调整了:

  

转载于:https://www.cnblogs.com/kriskee/p/5310461.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值