iPhone的软键盘为216像素高,程序员不得不在软键盘弹出时想办法调整窗口视图,避免输入控件被弹出的软键盘所遮挡。
iPhone程序员普遍采用注册软键盘事件的观察者对象来对付这个问题。当软键盘弹出时,窗体的View被上移,当软键盘隐藏时,窗体的View恢复原来位置,这样就避免了输入控件被遮挡。
KeyBoardUtil是我写的一个类,正是使用了上述原理,但进行了一些封装,便于程序员使用。
它的使用很简单。首先在要使用的ViewController中导入头文件:
#import"KeyBoardUtil.h"
并在类中声明一个KeyBoardUtil成员变量:
KeyBoardUtil* keyboardUtil;
在类的初始化方法中,初始化KeyBoardUtil对象:
keyboardUtil=[[KeyBoardUtil alloc]initWithOwner:self offsetY:100];
ower参数为self,offsetY参数则指定了键盘弹出时窗口View将要上移的像素,一般最高为软键盘全高216,但也可以不需要移动那么多,请根据实际情况决定需要移动多少。
然后在View Controller的显示和隐藏事件中分别调用KeyBoardUtil的reg和unreg方法:
#pragma mark 注册/注销键盘弹出通知方法
-(void)viewWillDisappear:(BOOL)animated
{
[keyboardUtil unreg];
[keyboardUtil release];
}
-(void)viewWillAppear:(BOOL)animated
{
[keyboardUtil reg];
}
全部代码就这些,是不是方便了许多?如果你喜欢这个小东西,那么可以去资源里下载:http://download.csdn.net/detail/kmyhy/3887363
更正:由于粗心大意,在源文件 KeyBoardUtil.m 的 keyboardWillShow: 方法中,误把“int height = owner.interfaceOrientation == UIInterfaceOrientationPortrait ? -offsetY+bug20px : -offsetY;”一行写成了
"int height = owner.interfaceOrientation == UIInterfaceOrientationPortrait ? -offsetY+bug20px : offsetY;”。特此更正,在此向各位朋友致歉。
分享到:
相关推荐
禁止软键盘弹出,自定义键盘
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
网上搜到很多关于这方面的介绍,最流行的就是在压缩模式下通过监听onLayout()函数来实现的监听,这种方法可能不适合希望在软键盘弹出时控件平移而非压缩需求的开发者,因此,我们的需求就是在符合任意控件在软键盘...
Android 底部控件随软键盘弹出而上移demo
android无软键盘弹出的EditText, 获取焦点也不会弹出.
近乎完美的监听软键盘的弹出与收起的
通过重写onLayout方法,判断软键盘是否弹出。判断到键盘是否弹出后,就可以做自己想做的事情了。
软键盘弹出时动态改变UI布局学习Demo
最简单的数字软键盘例子,包含QlineEdit弹出的部分,方便自己根据需要修改。比qt自带的例子inputpanel简单的多。
3种方法实现软键盘监听的,种有一款适合你
在微信的登录界面,当用户点击填写密码框后,软键盘弹出,然后上面部分自动上移,软键盘不会遮挡住登录按钮,及下面的一个(登录遇到问题?)按钮,键盘消失后恢复。
当您使用触摸屏时,阻止 caribou(屏幕键盘)弹出。即使它在无障碍服务菜单中被禁用。
解决登录按钮被软键盘覆盖的问题,仿qq登录页面,解决登录按钮被软键盘覆盖的问题,仿qq登录页面
KeyboardUtilDemo
editview聚焦的时候,会自动弹出软键盘。这个小demo实现,打开界面自动弹出软键盘,点击非软键盘区域后,软键盘自动收起。
android中监听软键盘的弹出与隐藏,并获取软键盘的高度,在adjustPan,adjustResize,adjustUnspecified下都可以
android edittext不弹出软键盘三种方法“: 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: android:label="@string/app_name" ...
C#知识里利用VB制作的一款数字软键盘,可以实现点击文本框即可弹出软键盘。
android 监听软键盘状态(弹起还是收起),你懂的,没有现成的方法,通过跟布局的高度判断。