键盘遮挡输入框的问题

iOS开发之时键盘通知之前处理这种问题,总是在触发输入框编辑事件键盘弹出的时候,将当前的View整体向上移动,结束编辑又整体向下移,耗时耗力效率低。

 

在网上看了使用键盘通知的方法很是方便,所以写了个demo供初学者参考!

 

1.在ViewController.m文件声明

 

#import "ViewController.h"

 

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>

@property(nonatomic,strong)UITableView *tableView;//自定义表格TableView

@end

 

@implementation ViewController

 

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

 

- (void)viewDidLoad {

    [super viewDidLoad]; 4     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];

}

 

3.实现通知的响应方法

 

-(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;

}

 

4.UITextField的代理事件(点击键盘中的return按钮,隐藏键盘)

 

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

 

5.tableView的代理方法

 

-(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 = @"请输入";

    TF.delegate =self; //文本框添加代理

    [cell.contentView addSubview:TF];

    cell.textLabel.text = @"测试";

 

    return cell;

}

@end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值