iOS_开发经验总结:键盘遮挡输入框时的解决方法

iOS解决键盘弹出遮挡输入框问题 1、错误:                 键盘遮挡输入框最常见的可能就是在登录界面了,无论有多少个textFiled,不论是在VC的任何位置。都有可能造成键盘弹出来时,把输入框挡住了。如图:                                                                                       阅读详情

今天我来讲一下键盘遮挡输入框时的解决方法。我做的一个界面是这样的

我的输入框是在最下面,如果不做相关的操作的话,当编辑UITextField的时候,弹出键盘就会挡着输入框,那怎么解决这个问题呢,我们可以考虑让输入框随键盘一起向上移动,当关闭键盘时让输入框也一起向下移动回到原来的位置,这样就可以解决键盘挡着输入框的问题啦

下面看具体的代码实现:

在ios5.0之前呢键盘高度固定是216像素高,而ios5.0之后包括ios5.0键盘的高度再不是固定的,当由英文切换在中文输入时,键盘由原来的216变成了252

先说ios5.0之前的解决办法吧,我是通过UITextField的委托方法-(void)textFieldDidBeginEditing:(UITextField *)textField和另一个关掉键盘的方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField来实现的,点击键盘上的Return会关掉键盘的

复制代码
 1 - (void)textFieldDidBeginEditing:(UITextField *)textField
 2 {
 3     CGRect frame = textField.frame;
 4     int offset = frame.origin.y +422 - (self.view.frame.size.height - 240);//键盘高度216
 5     NSLog(@"offset is %d",offset);
 6     NSTimeInterval animationDuration = 0.30f;
 7     [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];
 8     [UIView setAnimationDuration:animationDuration];
 9     float width = self.view.frame.size.width;
10     float height = self.view.frame.size.height;
11     if(offset > 0)
12     {
13         CGRect rect = CGRectMake(0.0f, -offset,width,height);
14         self.view.frame = rect;
15     }
16     [UIView commitAnimations];
17 }
复制代码
复制代码
 1 - (BOOL)textFieldShouldReturn:(UITextField *)textField
 2 {
 3     NSTimeInterval animationDuration = 0.30f;
 4     [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
 5     [UIView setAnimationDuration:animationDuration];
 6     CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);
 7     self.view.frame = rect;
 8     [UIView commitAnimations];
 9     [textField resignFirstResponder];
10     return YES;
11 }
复制代码

对了在添加-(void)textFieldDidBeginEditing:(UITextField *)textField方法前要声明并设置delegate

另一个方法是针对ios5.0之后键盘高度随输入法不同变化时的解决办法,同时也适用于ios5.0之前

在-(void)viewDidLoad方法里面添加通知

复制代码
1   if(IOS_VERSION<5.0)
2     {
3         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
4         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillHideNotification object:nil];
5     }else{
6         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
7     }
复制代码

至于如何获取IOS系统版本号通过如下可获取

#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]

添加一个方法-(void)keyboardWillShow:(NSNotification *)notification具体如下

复制代码
-(void)keyboardWillShow:(NSNotification *)notification
{

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
#endif
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2
            NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
#else
            NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey];
#endif
            CGRect keyboardBounds;
            [keyboardBoundsValue getValue:&keyboardBounds];
            NSInteger offset =self.view.frame.size.height-keyboardBounds.origin.y+64.0;
            CGRect listFrame = CGRectMake(0, -offset, self.view.frame.size.width,self.view.frame.size.height);
            NSLog(@"offset is %d",offset);
            [UIView beginAnimations:@"anim" context:NULL];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
            [UIView setAnimationBeginsFromCurrentState:YES];
            [UIView setAnimationDuration:0.3];
            //处理移动事件,将各视图设置最终要达到的状态
    
            self.view.frame=listFrame;
            
            [UIView commitAnimations];
            
        }
}
复制代码

这个是编辑输入框时的效果

这个是键盘切换成中文输入法时的效果

iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 (Swift) iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 最近在项目中需要解决苹果系统输入法遮挡输入框的问题,预期结果为: 若键盘弹出后会遮挡输入框,则输入框随键盘弹起上移,输入法切换时输入框始终保持在键盘上方; 若键盘弹出后不会遮挡输入框,但切换输入法后会遮挡输入框,则输入框需要在切换后上移,随后输入法切换时输入框始终保持在键盘上方。 一. 背景 开发环境:iOS14 + Xcode v12.0.1 + Swift5 设备:iPhoneSE(其他机型测试有效) 页面采用自动布局 二. 阅读详情

相关推荐

h5键盘遮挡输入框问题 、模仿微信输入框失去焦点时隐藏iphone的软键盘和聚焦时出现输入框

最近的项目做得是混合开发,其实比较尴尬的啦,手机端的安卓与ios挺多兼容问题的。 1、手机端h5页面中输入法键盘会遮挡输入框的问题。       $('input').on('focus',function(event){              //自动反弹 输入法高度自适应         var target = this;         setTimeout(function

github_turboemily的博客 2万+

关于ios键盘遮挡输入框

今天我来讲一下键盘遮挡输入框时的解决方法。我做的一个界面是这样的 我的输入框是在最下面,如果不做相关的操作的话,当编辑UITextField的时候,弹出键盘就会挡着输入框,那怎么解决这个问题呢,我们可以考虑让输入框随键盘一起向上移动,当关闭键盘时让输入框也一起向下移动回到原来的位置,这样就可以解决键盘挡着输入框的问题啦 下面看具体的代码实现: 在ios5.0之前呢键盘高度固定是216像素...

weixin_30530339的博客 292

iOS开发中键盘遮挡输入框的完整解决方案

iOS系统为键盘弹出与收起提供了多种通知,开发者可以通过监听这些通知来获取键盘状态和参数。其中,是最为关键的通知之一,它在键盘即将显示时发出,为视图调整提供了宝贵的时机。有时我们需要在特定条件下允许手势识别器响应事件。例如,只有在某个子视图区域才响应 Tap:// 只在 containerView 区域内响应点击逻辑分析:实现协议方法。通过判断点击位置是否在指定区域,控制是否响应手势。

weixin_42510201的博客 740

IOS遇到的几个H5坑、h5键盘弹起遮挡输入框的处理

原因分析:通常我们习惯用height属性设置行间的高度和line-height属性设置行间的距离(行高),当点击输入的时候,光标的高度就自动和父盒子的高度一样了。(谷歌浏览器的设计原则,还有一种可能就是当没有内容的时候光标的高度等于input的line-height的值,当有内容时,光标从input的顶端到文字的底部)问题描述:在ios端,上下滑动页面时,如果页面高度超出了一屏,就会出现明显的卡顿,页面有部分内容显示不全的情况,例如下图,右图是正常页面,边是ios上下滑动后,卡顿导致如左图下面部分丢失。

Bynine9的博客 5434

解决移动端 ios 系统键盘遮挡的问题

亲测 ios 9 ,ios10 系统有效,其他请自行测试,建议通过判断系统类型来动态引入此脚本 var isIPHONE = navigator.userAgent.toUpperCase().indexOf(IPHONE)!= -1; if(isIPHONE){ // 元素失去焦点隐藏iphone的软键盘 function objBlur(obj,time){ var startTime=0,endTime=0, time = !time?30:time, docTouchend = function(event){ endTime = new Date().ge

IOS 键盘挡住输入框的问题解决办法

IOS 键盘挡住输入框的问题解决办法 在iOS开发发现一个问题,有时输入框位于低出时,当编辑输入时,弹出的键盘会挡住输入框,令用户看不清楚实时的输入情况,使界面交互极度不友好。 经过查资料终于解决了这个问题。 解决思路: 1. 输入框监听UIControlEventEditingDidBegin事件,当用户开始输入时,将整个view上移。 2. 输入框监听UIControlEventEditingDidEnd事件,当用户结束输入时,将整个view下移,恢复到原位置。 输入框监听事件: [textfield addTarget:self action:@selector(textFie

【IOS16底部input框被弹起来的软键盘挡住解决方法】

万能方法 解决input框被软键盘挡住

Newz0722的博客 909

攻防世界:Crypto习题之easy_RSA

在非对称加密算法中,单向函数被广泛应用,用于确保从公钥加密后的密文无法轻易推导出私钥,从而保证数据的安全性。而其中最著名的算法便是 RSA 加密算法。首先设φm:=∣1≤k≤mgcdkm1∣为欧拉函数(Euler’sche Phi-function)。pqn:=pqpqφnnpqpqφnp−1q−1e∈12...φn−1gcdφne1ended≡1φn假设我们现在有明文x以及公钥en。

qq_52789488的博客 1570

解决输入法遮挡--ios手机

// 解决输入法遮挡----一般是 ios上 var timer = null; $(’.bInput’).on(‘focus’, function() { clearInterval(timer); var index = 0; timer = setInterval(function() { if(index&amp;amp;amp;amp;gt;5) { $(‘body’).scrollTop(1000000); cle......

在北风吹起的时候加入我们的队伍 在秋雨到来的时候成为彼此的温暖 1953

CentOS7下NFS共享报错RPC问题的3种解决方案(含防火墙配置详解)

本文详细解析了CentOS7下NFS共享报错RPC问题的3种解决方案,包括防火墙配置详解。从基础连通性检查到RPC服务状态验证,再到精准开放必要端口和SELinux集成,提供全面的排查与解决指南,帮助用户快速解决'No route to host'等常见问题。

weixin_29274969的博客 452

SFR算法实现详解:从边缘检测到MTF计算的完整流程

本文详细解析了SFR算法从边缘检测到MTF计算的完整流程,包括边缘检测、ESF超采样、LSF差分等关键步骤。通过代码示例和实战经验,帮助开发者高效实现成像系统解析力评估,优化MTF测量精度。适用于摄像头模组调试、工业检测等场景。

Black的专栏 1009

IOS中输入框被软键盘遮挡的解决办法

做IOS开发时,难免会遇到输入框被键盘遮掩的问题。上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了。     有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollView )中,然后滚动视图实现输入框不被软键盘覆盖,个人觉得此方案好是好,但是太过麻烦。     有的解决方案是通过一个通知 UIKeyboardDidShowNotification 去实

集结号 5万+

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2000

ios开发时,键盘遮挡输入框解决方法

ios开发中,键盘会自动遮挡UITextFiled,用户友好性差,下面有几种解决的办法。 1、界面中底部使用的UIView,然后在上面放入的界面。将下面的代码加入即可。 - (void)textFieldDidBeginEditing:(UITextField *)textField { [self animateTextField: textField up: YES]; } -

sunshine 5903

基于YOLOv8与UI界面的短视频内容审核系统实现与深度学习应用

YOLO(You Only Look Once)是一种用于实时物体检测的深度学习模型,它能在单次前向传播中同时完成物体检测和定位。YOLOv8是YOLO系列中的最新版本,相较于之前的版本,YOLOv8具有更高的检测精度和更快的推理速度,特别适合需要实时检测的应用场景。YOLOv8通过卷积神经网络(CNN)来提取图像中的特征,并通过多个卷积层来预测每个目标的位置和类别。该模型的优势在于其端到端的结构,使得在视频监控、自动驾驶、安防监控等实时应用中,能够实现快速且高效的目标检测。

YOLO 314

QGIS004:【05矢量属性表】-保留字段、删除字段、添加唯一值索引字段、添加字段到属性表、添加自增量字段、添加XY字段到图层、文本型转浮点型、重构字段、重命名字段

摘要:QGIS矢量属性表工具箱包括保留字段、删除字段、添加唯一值索引字段、添加字段到属性表、添加自增量字段、添加XY字段到图层、文本型转浮点型、重构字段、重命名字段等选项,本文介绍各选项的基本操作。

qq_31762031的博客 2311

IOS学习笔记36—解决键盘遮挡输入框(UITextField)问题

在IOS开发中,如果输入框(UITextFiled)在界面的下半部分,那么,当键盘出现的时候,势必会挡住输入框,就下下面这样:                                                             这样的效果造成了很不好的用户体验,在这一点上,Android或许就做的好一点,在Android中,只要有输入框的地方,不管EditTex

Ryan's zone 1万+

Vue 前端导出页面A4大小pdf,Vue前端导出pdf自动切割换页不切割内容 Vue导出页面pdf自动分页和添加页码 导出的pdf提高清晰度

【代码】Vue 前端导出页面A4大小pdf,Vue前端导出pdf自动切割换页不切割内容 Vue导出页面pdf自动分页和添加页码 导出的pdf提高清晰度。

weixin_41346436的博客 1797

iOS键盘管理神器IQKeyboardManager:彻底解决输入框遮挡难题

你是否还在为iOS应用中的键盘遮挡输入框问题烦恼?用户在填写表单时,键盘突然弹出遮挡输入区域,导致用户体验下降?现在,这些问题都可以通过IQKeyboardManager轻松解决。本文将详细介绍这款iOS开发必备工具,帮助你在5分钟内实现键盘自动适配,让输入交互从此流畅无阻。 读完本文,你将学会: - 如何零代码集成IQKeyboardManager到项目中 - 掌握核心功能配置与自定义技巧 -...

gitblog_01140的博客 1120

《MATLAB项目实战》,专栏目录和介绍

MATLAB 是一款强大且广泛应用的数值计算和数据可视化软件工具,它提供了一个高效、简洁的编程环境,使用户能够进行从简单的矩阵运算到复杂的多维数据分析的各种计算任务。无论是在人工智能、计算机视觉、图像处理还是其他领域,MATLAB 都能够提供精准、快速的解决方案,因此成为了全球科研人员、工程师以及数据分析师的得力工具。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6473

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

键盘遮挡输入框的解决方法

原文出处:http://blog.youkuaiyun.com/yangxt/article/details/8300970 今天我来讲一下键盘遮挡输入框时的解决方法。我做的一个界面是这样的 我的输入框是在最下面,如果不做相关的操作的话,当编辑UITextField的时候,弹出键盘就会挡着输入框,那怎么解决这个问题呢,我们可以考虑让输入框随键盘一起向上移动,当关闭键盘时让输入框

qq_28884869的博客 2240

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ios 键盘弹出input输入框被遮挡 键盘隐藏时页面无法回弹解决方案

ios 键盘弹出input输入框被遮挡 键盘隐藏时页面无法回弹解决方案 问题:测试发现ios微信端浏览器中,键盘弹出后,输入框被软键盘遮挡,input失焦后,因软键盘顶起的页面没有回弹到原来位置,需手动滑动一下页面才可以恢复;android端没有发现这个问题 原因:ios对fixed支持并不是很好,ios12+,微信6.7.4版本存在bug,键盘收回时,界面没有恢复,底下出现空白区域,并导致光标...

陈万洲的专栏 4506

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Swift 解决IOS开发中TableView中编辑UITextField时键盘遮挡输入框的情况

最近开始学习运用Swift开发IOS程序,动手做TableView有关的操作的时候发现输入框容易被键盘挡住,在上网查找了很多方法,一般都是用OC解决的,而且过程比较复杂,就是解决一个键盘遮挡的问题不用那么麻烦吧,最后请教了前辈才解决,以下是解决办法: 情况一:如果你的ViewController是继承于UITableViewController,那么系统会自动处理键盘遮挡的问题; 情况二:如果

SwiftMeng的博客 2240

转载:IOS中输入框被软键盘遮挡的解决办法

做IOS开发时,难免会遇到输入框被键盘遮掩的问题。上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了。     有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollView )中,然后滚动视图实现输入框不被软键盘覆盖,个人觉得此方案好是好,但是太过麻烦。     有的解决方案是通过一个通知 UIKeyboardDidShowNotification 去实

esricd的专栏 1907
上一篇: iOS开发经验总结:自定义UITableView
下一篇: UIButton和UIImageView中Image拉伸效果的实现
yangxt
博客等级 码龄20年 172粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值