zoukankan      html  css  js  c++  java
  • 键盘遮挡输入框的问题

    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

  • 相关阅读:
    Menu-actionBarMenu字体颜色修改
    actionBarTab-actionBarTab自定义 布局没法改变其中字体相对中间的位置
    Funui-overlay 如何添加theme 的 overlay
    java进阶——反射(Reflect)
    java工具类学习整理——集合
    Java实例练习——java实现自动生成长度为10以内的随机字符串(可用于生成随机密码)
    打通Java与MySQL的桥梁——jdbc
    SQL数据库操作整理
    PhpStorm 4.0 & 5.0 部署本地Web应用
    PhpStorm 4.0 & 5.0 部署本地Web应用
  • 原文地址:https://www.cnblogs.com/fengmin/p/5716995.html
Copyright © 2011-2022 走看看