UITextField控件处理键盘弹出时遮住输入框的问题

原文连接: 
http://www.devdiv.com/thread-70159-1-1.html 

实现以下三个方法,如果弹出的键盘会遮住输入框
,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。 
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。


 1 - (void)keyboardWillShow:(NSNotification *)noti
2 {
3 //键盘输入的界面调整
4 //键盘的高度
5 float height = 216.0;
6 CGRect frame = self.view.frame;
7 frame.size = CGSizeMake(frame.size.width, frame.size.height - height);
8 [UIView beginAnimations:@"Curl"context:nil];//动画开始
9 [UIView setAnimationDuration:0.30];
10 [UIView setAnimationDelegate:self];
11 [self.view setFrame:frame];
12 [UIView commitAnimations];
13 }
14
15
16 - (BOOL)textFieldShouldReturn:(UITextField *)textField
17 {
18 // When the user presses return, take focus away from the text field so that the keyboard is dismissed.
19 NSTimeInterval animationDuration = 0.30f;
20 [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
21 [UIView setAnimationDuration:animationDuration];
22 CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);
23 self.view.frame = rect;
24 [UIView commitAnimations];
25 [textField resignFirstResponder];
26 return YES;
27 }
28
29 - (void)textFieldDidBeginEditing:(UITextField *)textField
30 {
31 CGRect frame = textField.frame;
32 int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
33 NSTimeInterval animationDuration = 0.30f;
34 [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];
35 [UIView setAnimationDuration:animationDuration];
36 float width = self.view.frame.size.width;
37 float height = self.view.frame.size.height;
38 if(offset > 0)
39 {
40 CGRect rect = CGRectMake(0.0f, -offset,width,height);
41 self.view.frame = rect;
42 }
43 [UIView commitAnimations];
44 }

另外我自己做了一点修改: 
在实际用的时候,键盘消失原来的控件并没有回归都原来的位置,而是上移了20个像素,我估计是因为顶部Bar的原因,只要将22行代码改成如下就可以了: 
CGRect
rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width,
self.view.frame.size.height);

时间: 2024-12-14 18:10:03

UITextField控件处理键盘弹出时遮住输入框的问题的相关文章

Android软键盘弹出时布局问题

最近项目需要做一个类似聊天室的模块,基于Socket实现的,这部分稍后一段时间再做总结,功能上的相关点都实现了小例子也做出来了,最后发现一个比较腻歪的问题就是软键盘弹出时总是会把标题“挤出”屏幕,(无论标题是写在布局中还是仿照theme的方式添加到style中),输入时有失观赏如下图:      隐隐感觉之前项目一直有类似问题,只不过一般只在登陆界面,无伤大雅,用户输入后一掠而过,可以忽略,但这个页面这么处理确实不太美观. 查了下此类问题大致两种思路解决:         一.调整布局在底层使用

iOS开发,使用Category实现键盘弹出时,移动View以防被遮住

嗯,直接上代码!!!! 这是.h文件的 #import <UIKit/UIKit.h> @interface UIView (AboutKeyboard) @property (nonatomic) CGFloat moveDistince; @property (nonatomic) UIView *moveView; /* *指定一个View在键盘出现和消失时移动,如果存在superView则移动superView,否则移动自身 */ - (void)registerWhenKeyboar

移动端 软键盘 弹出时 影响布局

移动端 软键盘 弹出时 会影响布局 1)前段时间作的移动端页面,因为高度只有1页所以用了height:100%;width:100%; ios下点击输入框弹出软键盘时,布局没有大影响. 当输入框可能被软键盘压到时,在一部分安卓下却出了问题,华为自带浏览器和UC会有布局上的问题. 原因可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').height($('bod

【WP8】键盘弹出时控制Frame位置

WP上,当使用TextBox输入文字的时候,键盘会把TextBox向上推一段距离 当编辑第二个TextBox的时候,页面被上推,键盘刚好和TextBox靠在一起 当编辑第一个TextBox的时候,页面被上推,键盘与TextBox有一段很小的距离 现在需要实现一个文本输入的窗口,当用户编辑文本的时候,TextBox可以紧靠在TextBox 实现:通过绑定监听ApplicationFrame的RenderTransform中的TranslateTransform中的Y属性的变化,从而自行控制Fram

怎么让软键盘弹出时,部分控件上移

之前写注册页面的时候,UI同学给我提了个意见,让弹出软键盘时候,左上角的标题"注册"不动,中间内容往上移动,效果这样经过查阅资料和多方实践,解决方法如下 1.先要设置页面软键盘模式,这样每次软键盘弹出后布局高度会减少软键盘的高度 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RES

Android 软键盘弹出时布局内指定内容上移实现及问题解决

Android SDK目前提供的软键盘弹出模式接口只有两种: 一是弹出时自动回冲界面,将所有元素上顶, 一种则是不重绘界面,直接将控件元素遮住,   没有其他模式,如果想实现其他效果,光使用系统接口是不行的.   解决方法:   第一步:给想要被顶上去的内容嵌套一个 ScrollView :   <ScrollView     android:layout_width="match_parent"     android:layout_height="0dp"

iOS开发中如何在键盘弹出时改变View的高度

在iOS开发的时候有两个经常要用到的控件UITextfield跟UITextView,我们输入内容基本是通过这两个控件进行的,但是有时候会遇到这样的问题:在点击输入之后弹出键盘遮盖住了输入框,可以通过以下办法解决: 添加通知监听键盘的弹出跟隐藏 //监听键盘弹出和隐藏 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillSho

解决键盘弹出时,webview被挤压导致背景图片被挤压出空白

第一种方法: 1.给外层div容器设置背景图片 style="height: 100%;background: url(../../images/10.jpg);background-size: 100% 100%;" 2.监听键盘弹出事件,弹出时调整容器的高度以适应背景图片 <body onresize="windowSizeChange();"> var oglHeight = document.querySelector("body&qu

ios11,弹出层内的input框光标错位 键盘弹出时,输入信息,光标一直乱跳

之前开发了一个微信项目,维护期中苹果手机突然出现光标错位现象,经过排查,发现是最新的ios11系统的锅. 具体情况:弹出层使用position: fixed:弹出层内附带input/textarea输入框,ios11系统的苹果机用户在点击输入框,出现键盘后,弹出层被顶上去,而光标还停留在原处,即出现错位情况. 解决思路: 解决光标错位:弹出层设置为position: absolute:body添加position: fixed; 弹出层重新定位:获取滚动条高度,设置为弹出层Top值: funct