iOS 键盘遮挡输入 解决办法

时间:2022-12-04 19:23:25

 

 

 

第一种方式(CGAffineTransform):

 

通过CGAffineTransformMakeTranslation方法来临时改变位置,然后通过CGAffineTransformIdentity恢复位置;

如果需要加动画,直接放在UIView的animation的block里就可以了。

// 比如这样用
[UIView animateWithDuration:MJRefreshFastAnimationDuration animations:^{
self.arrowView.transform
= CGAffineTransformIdentity;
}];

 

 

 

 

 

 

第二种方式(UITableView): 

 

1.初始化及添加通知观察者

- (void)viewDidLoad {
[super viewDidLoad];
self.tableView
= [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
self.tableView.
delegate = self;
self.tableView.dataSource
= self;
[self.view addSubview:self.tableView];

//键盘将要显示时候的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boardWillShow:) name:UIKeyboardWillShowNotification object:nil];
//键盘将要结束时候的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boardDidHide:) name:UIKeyboardDidHideNotification object:nil];
}

2.实现通知的响应方法

- (void)boardWillShow:(NSNotification *)sender{
//获得键盘的尺寸
CGRect keyBoardRect=[sender.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
//当键盘将要显示时,将tableView的下边距增跟改为键盘的高度
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyBoardRect.size.height, 0);
}

- (void)boardDidHide:(NSNotification *)sender{
//当键盘将要消失时,边距还原初始状态
self.tableView.contentInset = UIEdgeInsetsZero;
}

 

 

//测试

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
//取消当前输入框的第一响应者
[textField resignFirstResponder];
return YES;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 15;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *ider = @"cell";
UITableViewCell
*cell = [tableView dequeueReusableCellWithIdentifier:ider];
if (!cell) {
cell
= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ider];
}

UITextField
*TF = [[UITextField alloc] initWithFrame:CGRectMake(100, 0, 150, 44)];
TF.placeholder
= @"请输入";
TF.
delegate =self; //文本框添加代理
[cell.contentView addSubview:TF];
cell.textLabel.text
= @"测试";

return cell;
}

 

 

 

 

 


 

转载请注明出处:http://ficow.cn

广大喵 Ficow Shen