IOS键盘输入屏幕上移

在IOS开法中经常会遇到键盘遮挡屏幕的事情(比如输入账号密码验证码等等),就使得原本都不大的屏幕直接占了一半甚至更多的位置,这倒无所谓,关键是挡住了下面的按钮。这样的话按钮的事件也就触发不了,最好的解决办法就是当输入这些信息的时候让整个屏幕上移一个键盘的位置,或者上移到指定的位置。

首先一般输入的话都用的是UITextField,所以要监听用户什么时候开始输入和什么时候结束输入,直接设置代理代理就行了,要遵受

UITextFieldDelegate协议。

//遵循协议

@interface ViewController ()<UITextFieldDelegate>

//设置属性

@property(nonatomic,strong)UITextField* UITF;

//设置代理

UITF.delegate=self;

//代理方法

//键盘弹出时屏幕上移

-( void )textFieldDidBeginEditing:(UITextField *)textField

{

  //假如多个输入,比如注册和登录,就可以根据不同的输入框来上移不同的位置,从而更加人性化

//键盘高度216

//滑动效果(动画)

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@ "ResizeForKeyboard"  context:nil];

[UIView setAnimationDuration:animationDuration];

//将视图的Y坐标向上移动,以使下面腾出地方用于软键盘的显示

self.view.frame = CGRectMake(0.0f, -100.0f/*屏幕上移的高度,可以自己定*/, self.view.frame.size.width, self.view.frame.size.height);

[UIView commitAnimations];

}

//取消第一响应,也就是输入完毕,屏幕恢复原状

-( void )textFieldDidEndEditing:(UITextField *)textField

{

//滑动效果

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@ "ResizeForKeyboard"  context:nil];

[UIView setAnimationDuration:animationDuration];

//恢复屏幕

self.view.frame = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);

[UIView commitAnimations];

}

接下来说一下取消第一响应。

一般都是在当前View上添加一个点击手势即可,这样的话就可以取消键盘的第一响应,但是这样的话有一个弊端,比如:因为注册登录页面当屏幕上移时,

就会显示注册或登录的页面,如果添加点击手势的话那么就会覆盖掉按钮的点击事件,也就是明明看到了按钮,但是点击却没反应,那么怎么办呢?

如何实现注册登录的按钮事件都在,点击其他的地方还能取消键盘的第一响应。

其实很简单,我的解决办法是这样的

创建一个按钮,和屏幕一样大,所有的控件全部都放到这个按钮上,而这个按钮的点击事件就是取消输入框的第一响应。这样就可以了。

时间: 2024-12-24 08:38:07

IOS键盘输入屏幕上移的相关文章

iOS开发之UI——键盘弹出屏幕上移

平时在开发中,当有输入框时,弹出的键盘有时会遮挡住下方的屏幕,为此我们可以在对输入框进行操作时使屏幕上移,避免下方屏幕被遮挡.(也可以使用ScrollView进行滑动.) #pragma mark - 屏幕上弹 -( void )textFieldDidBeginEditing:(UITextField *)textField {      //键盘高度216           //滑动效果(动画)      NSTimeInterval animationDuration = 0.30f;

IOS开发-点击View取消键盘输入

要想在一个TextField等输入框中取消输入,有几个办法,第一个是在键盘添加按钮,第二个就是通过判断然后取消键盘的输入了. 下面讲第二个 写一个方法并实现 // .h文件 - (IBAction)cancelInput:(id)sender; // .m文件 - (void)cancelInput:(id)sender { [TextField1 resignFirstResponder]; [TextField2 resignFirstResponder]; [TextView resign

c语言:从键盘输入BOY三个字符,然后把它们输出到屏幕。

从键盘输入BOY三个字符,然后把它们输出到屏幕. 程序: #include<stdio.h> int main() { char a,b,c; printf("请输入字符:"); a=getchar();//注意getchar一次只能读入1个字符 b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; } 结果: 请输入字符:BOY BOY 请按任意键继续.

汇编一点点提高3——键盘输入8位二进制数,存入NUM单元,并在屏幕上显示对应的16进制数

此程序要注意一下几点: 1.dos1号功能--带回显的键盘输入,自动存入al 2.dos7号功能--不带回显的键盘输入,自动存入al,若要在屏幕中显示要调用DOS2号功能 3.将输入的多个二进制数转换为ASCII码 input:  mov ah,1  int 21h  add bl,bl  cmp al,'1'  jnz P1  inc bl  P1: dec ch  jnz input 4.换行子程序: newline: mov ah,2 mov dl,13 int 21h mov ah,2

关于xcode7下的ios模拟器输入内容无法显示系统键盘的解决办法

xcode7下的ios模拟器输入内容无法系统键盘,只能用电脑键盘输入内容,这样可能会对调试带来麻烦. 其实xcode7下的ios模拟器默认只能使用一种,要么是模拟器系统键盘,要么就是是电脑键盘.设置方法如下: 打开ios模拟器菜单栏:Hardware-->Keyboard,会分别看到三个选项:Uses the Same Layout as OS X .Connect Hardware Keyboard和Toggle Software Keyboard.Uses the Same Layout a

【c语言】从键盘输入BOY三个字符,然后把它们输出到屏幕

// 从键盘输入BOY三个字符,然后把它们输出到屏幕 #include <stdio.h> int main() { char a,b,c; printf("请输入三个字符:"); a = getchar(); b = getchar(); c = getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); return 0; } <img src="http://img.blog.csdn.n

第三章 键盘输入和屏幕输出

1.顺序结构 a.输入数据--处理数据--输出数据 b.程序获得输入数据的方式:键盘.文件 c.程序输出数据的方式:屏幕.文件 d.若是需要输入输出数据,则必须使用编译预处理指令:#include <stdio.h> 2.printf()格式字符 %d     decimal--输出十进制有符号 int 型 %u     unsigned--输出十进制无符号 int 型 %f      float--以小数形式(6位小数)输出 float,double 型 %e     exponent--以

TextView随键盘弹出上移高度

TextView随键盘弹出上移高度 很多时候我们都在为键盘遮挡了原本就不大的屏幕时而烦恼,特别是当用户处于编辑状态时,键盘下面的内容就看不见了,用户只能处于盲打状态了.现在有一种简单的解决办法,基本思路就是,添加通知.一直监听键盘事件,在键盘遮挡时,将编辑器上移键盘的高度,键盘消失时,编辑区回复原来位置,ok,来两段代码吧 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after loa

iOS 键盘挡住UITextField

iOS经常使用的两个功能:点击屏幕和return隐藏虚拟键盘和解决虚拟键盘挡住UITextField的方法 iOS上面对键盘的处理非常不人性化,所以这些功能都须要自己来实现, 首先是点击return和屏幕隐藏键盘 这个首先引用双子座的博客 http://my.oschina.net/plumsoft/blog/42545,他的文章写的非常好.对大家的理解非常有优点. 在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘.对于 iPad 程序.其键盘有一个button能够用来关闭键盘,