iOS键盘输入屏幕上移

简介: 在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上添加一个点击手势即可,这样的话就可以取消键盘的第一响应,但是这样的话有一个弊端,比如:因为注册登录页面当屏幕上移时,

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

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

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

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

 

 

 

相关文章
|
安全 vr&ar 数据安全/隐私保护
iOS移动设备屏幕镜像电脑软件AirServer2023
AIrServer是一款ios投屏到mac的专用软件,可将iOS上的音频,视频,照片,幻灯片和镜像接收通过AIrPlay投射到Mac。AIrserver 7 mac版可以实现将手机上的媒体文件以及其他操作投射到电脑上进行操作。使用AIrServer,您现在可以从Mac,iOS,PC,
154 0
|
iOS开发 Perl
iOS 屏幕比例适配
iOS 屏幕比例适配
|
iOS开发
iOS 屏幕边缘侧滑返回
iOS 屏幕边缘侧滑返回
331 0
|
iOS开发
iOS 自己动手, 快速生成屏幕快照
近段时间苹果再次提交审核的时候, 6.5寸的屏幕快照变成必选项了, 这样我们这种在上线前抓紧把BUG改完, 以为提交审核顺利的人, 着实头疼了一把.
289 0
iOS 自己动手, 快速生成屏幕快照
|
缓存 编解码 并行计算
iOS 开发:绘制像素到屏幕
像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数。这里我们讲一下这个过程背后的东西。希望能够帮助大家了解什么时候该使用什么API,特别是当遇到性能问题需要调试的时候。当然,我们这里主要讲iOS,但是事实上,很多东西也是可以应用到OSX上面的。
275 0
iOS 开发:绘制像素到屏幕
|
iOS开发
iOS开发遇到的屏幕上下闪出黑边的解决方法
iOS开发遇到的屏幕上下闪出黑边的解决方法
185 0
iOS开发遇到的屏幕上下闪出黑边的解决方法
|
iOS开发 计算机视觉 移动开发