iOS开发笔记之解决键盘遮挡UITextField问题

WebView输入框软键盘遮挡问题(沉浸状态栏和adjustResize的冲突) WebView为什么没有在软键盘弹出时更新布局,是由于沉浸状态栏和adjustResize的冲突。手动处理软键盘更新布局,需要考虑到底部虚拟按键的高度。 阅读详情
    // 键盘出现的通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    // 键盘消失的通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

- (void)keyboardWillShow:(NSNotification *)notification {
    // 获取键盘高度
    CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    
    // 计算出键盘顶端到输入框底端的距离
    CGRect tFActualFrame = [self.currentTF convertRect:self.currentTF.frame toView:self.view];  // textField在self.view中的实际frame

    CGFloat offset;
    
    offset = tFActualFrame.origin.y + tFActualFrame.size.height - (Screen_Height - kbHeight - Keyboard_Interval);  // Keyboard_Interval为自定义的textField与键盘保持的距离

    // 键盘动画时间
    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    // 将视图上移计算好的偏移
    if (offset > 0) {
        [UIView animateWithDuration:duration animations:^{
            self.view.frame = CGRectMake(0, -offset, self.view.frame.size.width, self.view.frame.size.height);
        }];
    }
}

// 键盘消失事件
- (void)keyboardWillHide:(NSNotification *)notification {
    // 键盘动画时间
    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    // 视图恢复原位置
    [UIView animateWithDuration:duration animations:^{
        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }];
}

iOS开发:解决键盘遮挡视图的问题 综上所述,通过监听键盘的显示和隐藏事件,并在事件处理方法中调整视图的位置,我们可以解决键盘遮挡视图的问题。通过上述代码示例,你可以在你的iOS应用程序中实现这一功能。在iOS应用程序开发中,当用户在文本输入时,常常会遇到键盘遮挡了输入框或其他视图的问题。首先,我们需要监听键盘的显示和隐藏事件,以便在键盘出现或消失时做出相应的调整。在键盘显示事件的处理方法中,我们可以获取键盘的尺寸,并相应地调整视图的位置,以避免被键盘遮挡。为了避免内存泄漏,我们应该在适当的时候注销键盘显示和隐藏事件的通知。 阅读详情

相关推荐

iOS 软键盘遮挡问题 点击外部隐藏软键盘

iOS软键盘当被遮挡时,自动弹起,点击return时隐藏软键盘,点击外部UIView时,隐藏软键盘

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

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

Bynine9的博客 5435

移动端固定输入框在底部会被键盘遮挡的解决方法(必看篇)

由于公司需求,需要做一个实时对话的聊天功能。遇到各种小坑就不多说了,下面就记录一下遇到最坑的一个问题。。 页面布局写完后,在安卓和苹果手机测试了一下,问题来了!!!在安卓手机中布局完美展示(这很好),但在苹果手机下,经常点击输入框键盘会把输入框挡住。 如下图显示: 图一 图二 图三 (图一和图二都是有问题的,图三才是想要的效果。) 每次键盘遮挡住输入框之后,必须要手动向上滑动一下屏幕才显示出来,这体验效果就很不好了吧。然后自己就尝试了各种方法,什么定时器、绝对定位、固定定位、计算屏幕高度再定位等等,都没有作用,键盘出来后还是会遮挡住。最后只能上网查找答案,找了半天,终于找到了答案,这里要

IOS——UITextField被键盘遮蔽解决方案

UITextField被键盘遮蔽解决方案

windkisshao的专栏 3482

iOS开发中防止键盘挡住UITextField解决方案

最近转入ios开发,发现ios的UITextField如果在屏幕的最底部的时候,键盘不能自动的调整界面的布局,需要手动的调整位置才可以,所以自己研究和拿着笔话,想写一个通用的方法来实现每一个界面自动适配键盘的位置,这样的话,不用每一个界面去操作界面的位置了,具体的解决方案如下:1.先创建一个UIViewController这个UIViewController作为父类,让以后的每一个界面继承这个界面,在这个界面里面实现一个委托,代码如下:2.在这个BaseViewCOntroller.m文件中,现实UITextFieldDelegate中的两个方法,textFieldDidBeginEdi

第 3 天:Actor 是什么?创建你的第一个游戏对象!

本文详细介绍 Actor 在 Unreal Engine 5 中的作用,并通过 C++ 创建你的第一个游戏对象。你将学习 Actor 的生命周期(BeginPlay、Tick)、如何添加组件(Static Mesh),并让 Actor 在游戏世界中运作。同时提供 常见问题解决方案,助你快速上手 UE5 C++ 开发!🎮 跟随本教程,构建属于你的第一个游戏对象!

m0_37643873的博客 2630

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

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

Ryan's zone 1万+

无感无刷电机三段式启动避坑指南:从预定位到闭环切换的STM32代码实现

本文深入解析无感无刷电机的三段式启动流程,涵盖预定位、启动加速与闭环切换三大阶段。重点对比了恒频升压、恒压升频与升频升压三种核心启动策略的优劣,并提供了基于STM32的详细状态机代码实现与关键参数调试指南,帮助工程师有效规避启动失步、线圈过热等常见问题,实现稳定可靠的无感驱动。

herb5的博客 535

uitextfield 键盘类型_【改】iOS学习之键盘类型UIKeyboardType

关于 UITextField 的键盘是可以自定义的,正好在一个代码用这个,就总结一下。在 UITextField 中有一个 keyboardType 属性,它的类型是一个枚举值,下面就是枚举值和对应的键盘样式UIKeyboardTypeDefault  // Default type for the current input method.UIKeyboardTypeASCIICapable  ...

weixin_33661631的博客 993

GPU运维基础知识

常见的GPU型号如NVIDIA Tesla系列(V100、A100)、GeForce RTX系列(3090、4090)和AMD Instinct系列(MI250X)。硬件监控工具包括NVIDIA的nvidia-smi和AMD的rocm-smi,用于实时监控GPU状态、温度、功耗和显存使用情况。NVIDIA和AMD是主流GPU供应商,NVIDIA的CUDA架构和AMD的ROCm生态是核心。GPU包含流处理器、显存、显存带宽等关键组件,不同型号的GPU在计算能力、显存容量和功耗上存在差异。

云原生运维的博客 762

保姆级教程:用OpenCV的calibrateHandEye()搞定机器人手眼标定(附Python代码)

本文详细介绍了如何使用OpenCV的calibrateHandEye()函数完成机器人手眼标定,解决机械臂与相机坐标系对齐问题。教程涵盖从基础原理、数据采集到Python代码实现的完整流程,特别适合需要精确视觉引导的机器人应用开发。通过手眼标定,可确保机械臂准确抓取相机检测到的目标物体。

weixin_33712987的博客 517

IQKeyboardManager:iOS键盘管理的智能避障解决方案

你是否曾为iOS应用中键盘遮挡输入框而烦恼?当用户点击输入框时,键盘弹出遮挡了当前编辑区域,这种糟糕的用户体验几乎成了iOS开发者的"必修课"。传统解决方案要么需要手动计算键盘高度,要么依赖UIScrollView的复杂配置,维护成本高且难以应对所有边缘情况。 IQKeyboardManager正是为解决这一痛点而生。这是一个无代码侵入的通用库,能够智能地防止键盘滑动遮挡UITextField/

gitblog_00002的博客 1116

【Coze搞钱实战】14. 抖音直播间自动回复机器人实战教程:三小时搭建智能客服,互动率提升150%(保姆级无代码指南)

摘要:抖音直播间高频问题重复回复、观众互动不及时是运营痛点。本文针对新手和进阶用户,提供无代码的自动回复机器人搭建方案:新手1小时完成基础配置(Coze+抖音对接),进阶用户通过促销倒计时、粉丝分层、热点借势三大策略提升互动率150%。方案基于某女装直播间实测数据(日UV 5W+),所有工具免费获取,步骤拆解到分钟级,附避坑指南与效果验证(某案例互动率从8%升至20%),读者可直接套用配置模板,无需代码基础即可落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2459

iOS学习笔记——视图上移与键盘弹回

在学习iOS开发的过程中总是遇见键盘出现时,遮盖了输出口UITextField,无法看到用户自己输出的内容。这时就需要对当前视图做出相应的上移,当输出结束时点击屏幕的任意地方,使键盘弹回去。 第一种方法是在UITextField开始编辑前和编辑后调用的方法里添加移动视图的方法;第二种方法是新创建一个视图移动的方法,两次都调用,并判断是否做出相应移动。 把两种方法贴出来,都需要在.h文件中添加U

2718

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

SpringBoot一次请求中缓存数据,请求结束就清除的4种方法,你会几种?

通过以上四种方法,你可以在 SpringBoot 的一次请求中缓存数据,并在请求结束后自动清除这些缓存数据。使用 ThreadLocal:适用于需要跨多个方法调用的缓存数据,灵活性高,但需要注意内存泄漏问题。使用 AOP:适用于全局性的缓存管理,代码更加优雅,但需要对 AOP 有一定的了解。使用 ServletRequestListener:适用于简单的请求生命周期管理,配置简单,但功能相对有限。使用 HttpServletRequest 的 setAttribute 和 getAttribute。

java专栏 1295

探秘 KeyboardToolBar:解决键盘遮挡输入框的神器

探秘 KeyboardToolBar:解决键盘遮挡输入框的神器 在移动应用开发领域,一个常见的痛点问题就是当虚拟键盘弹出时,常常会遮挡住下方的输入框,给用户带来不便。然而,有了 KeyboardToolBar,这一切都将变得轻松自如。这是一款专为iOS(兼容iPhone和iPad)设计的开源工具,其核心目标便是彻底消除上述烦恼,提升用户体验。让我们一起深入了解这个宝藏项目! 项目技术分析 Keyb...

gitblog_00898的博客 787

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ios -- 虚拟键盘弹出挡住textfield的分析以及解决办法

虚拟键盘弹出挡住textfield的问题,在网上搜出一大堆。但是很多方案也只是在某种情况下能满足我们的需求。 之前的做法是根据int offset = textfield.frame.origin.y + height - self.view.frame.size.height  + 216(键盘高度)来计算y轴移动的偏移量。如果offset大于0,就向上偏移。 这里有个问题:如果textfi

迎着清晨的阳光,踏上梦想的旅程 1095

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

告别键盘遮挡:IQKeyboardManager让iOS输入体验丝滑流畅

在iOS应用开发中,键盘遮挡输入框是一个常见且影响用户体验的问题。当用户在聊天界面或表单页面输入内容时,弹出的键盘常常会覆盖输入框,导致用户无法看到自己的输入内容。**IQKeyboardManager**作为一款专注于解决iOS键盘遮挡问题的开源库,提供了简单高效的解决方案,让开发者无需编写复杂代码即可实现输入框的自动调整。本文将详细介绍IQKeyboardManager的核心功能、使用方法和实

gitblog_00445的博客 470

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等)。 1.特有的特 但对于UITextField来说,他又有很多自己独有的特性: (1)placeholder. 当UITextField上没有文本内容时,会以灰色的内容显示placeholder...

weixin_33849215的博客 235

iOS键盘管理终极指南:IQKeyboardManager自定义距离处理规则实战

在iOS应用开发中,键盘遮挡输入框是最常见的用户体验问题之一。IQKeyboardManager作为一款功能强大的iOS键盘管理库,能够自动调整输入框位置以避免被键盘遮挡,同时支持高度自定义的距离处理规则。本文将从基础配置到高级自定义,全面讲解如何利用IQKeyboardManager打造流畅的输入体验。 ## 📌 为什么选择IQKeyboardManager? IQKeyboardMana

gitblog_00256的博客 1097

iOS学习笔记——输入法切换时动态调整UITextField的位置

#import "TestViewController.h" #define IOS_VERSION ([[UIDevice currentDevice] systemVersion].floatValue) @interface TestViewController (){ CGFloat deltaY; float duration; CGFloat origina

cs789_360的专栏 978

告别键盘遮挡:IQKeyboardManager自定义距离与动画全攻略

IQKeyboardManager是iOS开发中一款高效解决键盘遮挡问题的库,它能自动调整输入框位置,支持自定义规则和动画效果,让开发者轻松实现流畅的输入体验。无论是聊天界面还是表单页面,都能通过简单配置实现完美适配。 ## 为什么选择IQKeyboardManager? 在iOS应用开发中,键盘遮挡输入框是常见问题。传统解决方案需要手动监听键盘通知、计算位移距离,而IQKeyboardMan

gitblog_00316的博客 731
上一篇: iOS可复用控件之分段滚动控件HTSegmentedScrollView
下一篇: iOS开发笔记之WKWebView的基本使用
zzyeeaa
博客等级 码龄11年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值