iOS技巧——即时监听键盘高度

来源:互联网 发布:windows arp a 编辑:程序博客网 时间:2024/05/17 08:04

需求:带输入框的view显示在界面最下端,当弹出键盘时,view要在键盘的上面,并且随着输入法的不同即时改变高度。


- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.        //使用NSNotificationCenter 键盘出现时    [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(keyboardWillAppear:)                                                 name:UIKeyboardDidShowNotification object:nil];        //使用NSNotificationCenter 键盘隐藏时    [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(keyboardWillBeHidden:)                                                 name:UIKeyboardWillHideNotification object:nil];    }
实现方法

-(void)keyboardWillAppear:(NSNotification*)aNotification{    CGSize size = [[[aNotification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;    if (size.height == 216) {        [UIView animateWithDuration:0.1 animations:^(void){            CGRect frame = _bottomView.frame;            frame.origin.y = DeviceHeight - 216 -44;            _bottomView.frame = frame;        }];    }else{        [UIView animateWithDuration:0.1 animations:^(void){            CGRect frame = _bottomView.frame;            frame.origin.y = DeviceHeight - 252 -44;            _bottomView.frame = frame;        }];    }}- (void)keyboardWillBeHidden:(NSNotification*)aNotification{    [UIView animateWithDuration:0.1 animations:^(void){        CGRect frame = _bottomView.frame;        frame.origin.y = DeviceHeight -44;        _bottomView.frame = frame;    }];}
其中  DeviceHeight 为设备高度的宏定义,用于 3.5、4寸屏幕的适配。

最后要在dealloc方法中移除通知

-(void)dealloc{    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];}



 


0 0