解决键盘遮挡输入框问题
来源:互联网 发布:qq防沉迷解除软件 编辑:程序博客网 时间:2024/05/16 19:19
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//创键10个输入框
for (int i=0; i<10; i++)
{
UITextField *field = [[UITextFieldalloc]initWithFrame:CGRectMake(20,20+i*60,200, 50)];
field.borderStyle =UITextBorderStyleRoundedRect;
field.placeholder = [NSStringstringWithFormat:@"第%d个输入框",i];
//设置输入框代理
field.delegate =self;
[self.viewaddSubview:field];
}
//如果输入框被挡住,那么将self.view上移
//先要获取到键盘的frame,才能得知输入框是否被挡住
//通过添加观察者,来拿到键盘的frame
//监听键盘抬起事件.
//UIKeyboardWillShowNotification 系统封装的事件
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(KeyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];
//监听键盘掉下的事件
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(KeyboardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];
}
- (void)KeyboardWillShow:(NSNotification *)noti
{
//先取到第7个输入框的下边界
//再取到键盘的上边界
//如果输入框的下边界 -键盘的上边界 大于0,则代表遮挡
NSLog(@"KeyboardWillShow");
//1.取到输入框的上边界
//取到通知信息
NSDictionary *dic = noti.userInfo;
NSLog(@"dic==%@",dic);
//接收键盘高度信息
NSValue *keyboardValue = [dicobjectForKey:@"UIKeyboardFrameEndUserInfoKey"];
CGRect keyboardRect = keyboardValue.CGRectValue;
//2.计算输入框与键盘的间隔
//输入框框下边界 -键盘上边界
NSInteger offset =_selectField.frame.origin.y +_selectField.frame.size.height - keyboardRect.origin.y;
//大于0代表遮挡
if (offset >0)
{
//将self.view上移offset个高度
self.view.frame =CGRectMake(0, -offset,self.view.frame.size.width,self.view.frame.size.height);
}
}
- (void)KeyboardWillHide:(NSNotification *)noti
{
NSLog(@"KeyboardWillHide");
//键盘消失,self.view还原位置
self.view.frame =self.view.bounds;
}
#pragma mark - UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
//开始编辑的时候,记下选择输入框
//这样才能拿到当前输入框的frame
_selectField = textField;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//让键盘掉下,触发KeyboardWillHide回调
[textField resignFirstResponder];
returnYES;
}
- 如何解决键盘遮挡输入框问题
- 解决键盘遮挡输入框问题
- iOS解决键盘遮挡输入框问题
- android,键盘遮挡了输入框,完美解决android键盘遮挡问题
- 解决键盘遮挡输入框(UITextField)问题
- 解决键盘遮挡输入框(UITextField)问题
- 解决键盘遮挡输入框(UITextField)问题
- iOS解决键盘遮挡输入框的问题
- 解决iOS键盘弹出遮挡输入框问题
- 简单完美的解决键盘遮挡输入框的问题
- iOS解决键盘弹出遮挡输入框问题
- 一招解决全局键盘遮挡输入框问题
- React-native键盘遮挡输入框问题的解决
- 输入框被键盘遮挡问题
- iOS键盘弹出遮挡输入框问题
- Android键盘遮挡输入框的问题
- 键盘遮挡住输入框的问题
- 键盘遮挡输入框的问题
- Android面试题总结加强再加强版(三)
- 今年学习的重点
- SQLServer 维护脚本分享(06)CPU
- TCP/IP四层协议栈
- TCP的交互数据流
- 解决键盘遮挡输入框问题
- 单例模式
- bzoj1934【shoi2007】Vote善意的投票
- 【Android】《第一行代码—Android》第四章总结
- 笔试题目总结之二——常用数据结构与算法
- do{}while(0);详解
- <二>Material主题的使用
- Leetcode-300.Longest Increasing Subsequence
- 笔试题目总结之三——软件工程中的开发模式