美文网首页@IT·互联网程序员
键盘遮住问题的解决

键盘遮住问题的解决

作者: Kevin_wzx | 来源:发表于2016-12-20 14:21 被阅读35次

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

2.1备注:方法二中也可以直接改变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.);
}

3.第三方插件IQKeyboardManager

直接倒入插件即可使用,无需更多的操作
相关链接:https://www.jianshu.com/p/77d2ba569142

注意:

屏幕快照 2018-03-28 上午11.26.22.png

备注:其他方法

相关文章

网友评论

    本文标题:键盘遮住问题的解决

    本文链接:https://www.haomeiwen.com/subject/xhaxvttx.html