iOS键盘遮挡问题解决办法

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

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

1.在ViewController.m文件声明

#import "ViewController.h"

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
@property(nonatomic,strong)UITableView *tableView;//自定义表格TableView
@end

@implementation ViewController

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

 1 - (void)viewDidLoad {
 2     [super viewDidLoad]; 4     self.tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
 5     self.tableView.delegate = self;
 6     self.tableView.dataSource  = self;
 7     [self.view addSubview:self.tableView];
 8
 9     //键盘将要显示时候的通知
10     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boardWillShow:) name:UIKeyboardWillShowNotification object:nil];
11      //键盘将要结束时候的通知
12     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boardDidHide:) name:UIKeyboardDidHideNotification object:nil];
13 }

3.实现通知的响应方法

 1 -(void)boardWillShow:(NSNotification *)sender{
 2     //获得键盘的尺寸
 3     CGRect keyBoardRect=[sender.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
 4     //当键盘将要显示时,将tableView的下边距增跟改为键盘的高度
 5     self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyBoardRect.size.height, 0);
 6 }
 7
 8 -(void)boardDidHide:(NSNotification *)sender{
 9     //当键盘将要消失时,边距还原初始状态
10     self.tableView.contentInset = UIEdgeInsetsZero;
11 }

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

6.结束!

时间: 2024-10-07 17:58:24

iOS键盘遮挡问题解决办法的相关文章

iOS键盘遮挡输入框,输入区域自动上移

在iOS开发过程当中,遇到关于键盘遮挡输入框的问题,经过网络参考与实践,总结如下: 登录窗口,上下放置两个UITextField,一个用户名,一个密码,放置的在屏幕下方1/3处,当点击用户名时,自动弹出键盘,正好挡住了输入框 解决思路: 1.BLoginViewController 实现UITextViewDelegate的方法 1 //实现了UITextFieldDelegate中的方法,当对TextField进行编辑即键盘弹出时,自动将输入框上移 2 -(BOOL)textFieldShou

[Cordova/Phonegap] Cordova iOS 应用在第三方输入法的键盘弹出(点击输入框)时,页面不上移,导致输入框被键盘遮挡 的解决办法

http://blog.csdn.net/lovelyelfpop/article/details/52033045 Cordova iOS应用在使用系统自带输入法键盘的时候,聚焦文本框是会将整体webview界面上移的,如下图: 然而,如果你用的是第三方输入法(百度.搜狗.qq输入法等都是),聚焦文本框弹出键盘时,界面却不会整体上移,导致文本框被软键盘遮挡,如下图: 不仅被遮挡,靠底部的文本框还无法往上拖拽滚至可视区域. 解决办法一:第三方键盘弹出,实现界面也能上移 使用 ionic-plug

『零行代码』解决键盘遮挡问题(iOS)

关注仓库,及时获得更新:iOS-Source-Code-Analyze https://github.com/draveness/iOS-Source-Code-Analyze Follow: Draveness · Github 这篇文章会对 IQKeyboardManager 自动解决键盘遮挡问题的方法进行分析. 最近在项目中使用了 IQKeyboardManager 来解决 UITextField 被键盘遮挡的问题,这个框架的使用方法可以说精简到了极致,只需要将 IQKeyboardMan

【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法

Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法 [原文链接] 这篇文章完美的解决了我几个月没结论的bug... 感谢热爱分享的技术达人~ 我是怎么走进这个大坑的..... 需求: 在listview中出一个EditText 接受用户输入消息. 前期解决方案: 给这个EditText绑定焦点事件.... 悲剧就开始了... 知道吗?当这个EditTextView被点了下,它的焦点就不断的获取,失去,获取,失去...  只点一下... 就频繁的重复..最后大部

IOS开发中滑动视图(UIScrollView, UITableView)的键盘遮挡处理

一.键盘遮挡的场景分类 1. 开始页面录入.输入控件在屏幕的下部,键盘出现后遮挡输入控件 2. 切换焦点.新输入框被当前键盘部分遮挡,可点击 3. 切换输入法. 4. 屏幕旋转.屏幕高度发生变化,原未被遮挡输入框旋转后被遮挡 二.UI需上移的距离计算 计算控件底部与键盘终点顶部的距离,调整阀值自定.通常选择输入控件最近的UIViewController->view作为同一参照 NSDictionary *userInfo = [notification userInfo]; NSValue* a

iOS开发 编辑框被系统弹出的软键盘遮挡问题

我们在开发注冊界面的时候,最后几个注冊条件经常easy被系统弹出的键盘遮挡,例如以下图: 能够看见,邮箱条件被遮挡掉了,怎么解决呢?我是通过UITextField的代理加计算偏移量: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.emailTextField.delegate = self; } - (

IOS控件UITextView 实现placeholder效果和解决UITableView键盘遮挡

平时开发中老是出现多行的文本而且要有placeholder提示,就自己整理项目中部分代码以供参考.讨论,希望有更好实现方法的人多多指教. 思路:通过改变UITextView的文本颜色实现placeholder效果,通过改变UITableView的setContentOffset方法解决键盘遮挡 1.创建UITextView textView = [[UITextViewalloc] init]; textView.font = [UIFontsystemFontOfSize:14]; textV

IOS 关于键盘遮挡编辑区域(UITextFiled/UITextView)的问题

参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval; 2.注册监听 NSNotificationCenter *defaultCenter = [NSNotificationCenter d

iOS 处理键盘遮挡TextField、TextView问题

之前处理键盘遮挡问题都是在每一个控制器进行单独处理,这样做真的是非常的费事,今天在做项目的时候就想到自己封装一个,记录一下这个“跌宕起伏”的过程. 思路是这样的:计算文本编辑控件Frame与键盘Frame,如果遮挡则移动控制器View. 创建控制器类:WKAvoidKeyboardViewController 1 #import <UIKit/UIKit.h> 2 3 @interface WKAvoidKeyboardViewController : UIViewController 4 5