iOS开发之时键盘通知之前处理这种问题,总是在触发输入框编辑事件键盘弹出的时候,将当前的View整体向上移动,结束编辑又整体向下移,耗时耗力效率低。
1.在ViewController.m文件声明
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (
nonatomic ,
strong)
UITableView *tableView;
@end
2.初始化及添加通知观察者
- (
void)viewDidLoad {
[
super viewDidLoad];
self.tableView = [[
UITableView alloc]initWithFrame:CGRectMake(
0,
50,
self.view.frame.size.width,
self.view.frame.size.height -
50)];
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];
}
3.实现通知的响应方法
-(
void)boardWillShow:(
NSNotification *)sender{
CGRect keyBoardRect=[sender
.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
self.tableView.contentInset = UIEdgeInsetsMake(
0,
0, keyBoardRect
.size.height,
0);
}
-(
void)boardDidHide:(
NSNotification *)sender{
self.tableView.contentInset = UIEdgeInsetsZero;
}
4.tableView的代理方法
#pragma mark - UITableViewDelegate
#pragma mark - UITableViewDataSource
-(
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,
5,
150,
20)];
TF
.placeholder = @
"请输入";
[cell
.contentView addSubview:TF];
cell
.textLabel.text = @
"测试";
return cell;
}
转载请注明原文地址: https://ju.6miu.com/read-680323.html