Osheep

时光不回头,当下最重要。

键盘遮住问题的解决

1.方法一(用UITextfield的delegate)

思路:抬高self.view的高度;不流畅,会有卡顿现象;解决卡顿的方法就是加个动画,在动画里面去改变frame;比如:

[UIView animateWithDuration:0.25 animations:^{// 键盘弹起
            
            CGRect frame = self.view.frame;
            frame.origin.y -= 40;
            self.view.frame = frame;
 }];
《键盘遮住问题的解决》

屏幕快照 2016-12-28 上午9.52.08.png

其中:_priceText是需要监听的textfield

2.方法二(用通知监听键盘位移)

思路:通过计算抬高需要的那一部分高度,流畅,推荐采用这个方法

《键盘遮住问题的解决》

屏幕快照 2016-12-28 上午9.57.17.png
《键盘遮住问题的解决》

屏幕快照 2016-12-28 上午9.57.32.png

其中:delta需要根据具体的控件位置来计算,就是算“SCREEN_HEIGHT – ”的后面部分(比如例子中的_loginButton.bottom-40)
总结:第二种方法可用于UITextfield和UITextView;第一种用在UITextfield;想在UITextView中使用直接换delegate及代理中的方法
相关http://www.jianshu.com/p/52925978bfbb

3.备注:方法二中也可以直接改变tableView的frame

例如:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- (void)keyboardWillShow:(NSNotification *)note {
 
    CGRect keyBoardRect=[note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    self.tableView.frame = CGRectMake(0, -64, SCREEN_WIDTH, SCREEN_HEIGHT - keyBoardRect.size.height);   
}
- (void)keyboardWillHide:(NSNotification *)note {

   self.tableView.frame = CGRectMake(0, 0, SCREEN_WIDTH, self.view.frame.size.height - 80.);
}
点赞