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

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

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

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

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

iOS键盘输入屏幕上移的更多相关文章

  1. iOS限制输入解决方法

    关于iOS 键盘输入限制(只能输入字母,数字,禁止输入特殊符号): 方法一: 直接限制输入 - (void)viewDidLoad { [super viewDidLoad]; textField = ...

  2. iOS,文本输入,键盘相关

    1.UIKeyboard键盘相关知识点 2.点击空白区域隐藏键盘(UIKeyboard) 3.键盘(UIKeyboard)挡住输入框处理 4.自定义键盘(UIKeyboard) 5.监听键盘弹出或消失 ...

  3. C语言程序设计(四) 键盘输入和屏幕输出

    第四章 键盘输入和屏幕输出 转义字符 \n 换行,光标移到下一行的起始位置 \r 回车(不换行),光标移到当前行的起始位置 \0 空字符 \t 水平制表 \v 垂直制表 \b 退格 \f 走纸换页 \ ...

  4. Python打印到屏幕_读取键盘输入

    Python打印到屏幕_读取键盘输入: print( ): 打印输出括号中的值 print("hello") # hello strs = 'hello' print(" ...

  5. 从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现。

    问题 从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现. 源程序 data segment hintinput db "plea ...

  6. IOS - 键盘处理

    iOS 发布了很多关于屏幕上键盘的通知.下面列出了这些通知的简要解释: UIKeyboardWillShowNotification 当键盘即将要显示的时候将会发出这个通知.这个通知包含了用户信息库, ...

  7. iOS 键盘挡住UITextField

    iOS经常使用的两个功能:点击屏幕和return隐藏虚拟键盘和解决虚拟键盘挡住UITextField的方法 iOS上面对键盘的处理非常不人性化,所以这些功能都须要自己来实现,  首先是点击return ...

  8. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。

    js 监听ios手机键盘弹起和收起的事件 /* js 监听ios手机键盘弹起和收起的事件 */ document.body.addEventListener('focusin', () => { ...

  9. iOS 键盘自适应(IQKeyboardManager)使用小结

    IQKeyboardManager Github地址 经常在开发一个应用程序,我们遇到了一个问题,iPhone的键盘上滑覆盖的UITextField / UITextView.IQKeyboardMa ...

随机推荐

  1. windows下使用C#获取特定进程网络流量

    最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名 ...

  2. servlet的四个作用域

    作用域规定的是变量的有效期限,servlet有四个作用域对象,这里只说三个: 一. request作用域: 1.作用范围: 就是指从http请求发起,到服务器处理结束,返回响应的整个过程.在这个过程中 ...

  3. ASP.NET Identity 简介

    翻译自:http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity ,略有改动. 背景:A ...

  4. deepin 15.3添加PPA源 安装php5.6

    想要在deepin 15.3上安装PHP5.6,我们需要手动添加源. 在https://launchpad.net/+search?field.text=php上可以通过搜索找到你想要的软件源, PP ...

  5. photoshop拾色器如何恢复默认?

    今天在做设计图的时候,遇到一个问题,当时就把我给整蒙了. 问题是这样的,ps的调色器变成了这样,如下: 本来应该是这样: 可能有人已经看出两张图的不同之处了. 但是我当时忙的不得了,恩是不知道哪里除了 ...

  6. The RAII Programming Idiom

    https://www.hackcraft.net/raii/ https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization

  7. mod-mono

    http://go-mono.com/config-mod-mono/  配置文件生成器 Mono remote debugging from Visual Studio http://stackov ...

  8. css清楚浮动的方法

  9. 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】

    先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量.如下图 如上程序中,在调用fn()函数时,函数体中第6 ...

  10. R语言-用R眼看琅琊榜小说的正确姿势

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 目录: 零:写在前面的一些废话 一.R眼看琅琊榜的基本原理 1.导入数据 2.筛选数据 3.多条 ...