IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡
发布时间 - 2026-01-10 22:14:29 点击率:次IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡

在iOS开发中,UITextFiled和UITextView是很常见的两个控件,当我们设置好这两个控件后,点击文字输入区域,系统会自动弹出键盘,但是如何收起键盘、点击哪里收起键盘,以及在iPhone4中键盘弹出后遮挡输入框怎么办呢?
这篇文章将带领大家解决:
1》点击其他空白区域收起键盘
2》点击键盘右下角的键收起键盘
3》处理键盘遮挡问题
一,点击其他空白区域收起键盘
- (void)viewDidLoad {
[super viewDidLoad];
[self setUpForDismissKeyboard];
}
#pragma mark - 回收任何空白区域键盘事件
- (void)setUpForDismissKeyboard {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
UITapGestureRecognizer *singleTapGR =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapAnywhereToDismissKeyboard:)];
NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];
[nc addObserverForName:UIKeyboardWillShowNotification
object:nil
queue:mainQuene
usingBlock:^(NSNotification *note){
[self.view addGestureRecognizer:singleTapGR];
}];
[nc addObserverForName:UIKeyboardWillHideNotification
object:nil
queue:mainQuene
usingBlock:^(NSNotification *note){
[self.view removeGestureRecognizer:singleTapGR];
}];
}
- (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer {
//此method会将self.view里所有的subview的first responder都resign掉
[self.view endEditing:YES];
}
二,点击键盘右下角的键收起键盘
#pragma mark - TextView 代理方法
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[self.workLogTextView resignFirstResponder];
return NO;
}
return YES;
}
注意:需要遵守textView/textFiled的代理。改代码是textView代理方法,若实际用到的是textFiled,只需调用textFiled的该类方法即可。
三,处理键盘遮挡问题
#pragma mark 键盘遮挡
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
if (self.userInfo.isPhone4) {
CGFloat offset_y = 0.f;
if (textView.tag == CALL_CONTENT_TEXTFIRLD) {
offset_y = 100.f;
}
CGPoint point = self.BackScrollView.contentOffset;
point = CGPointMake(point.x, offset_y);
[UIView animateWithDuration:0.25 animations:^{
self.BackScrollView.contentOffset = point;
}];
}
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
if (self.userInfo.isPhone4) {
CGFloat offset_y = 0.f;
if (textView.tag == CALL_CONTENT_TEXTFIRLD) {
offset_y = 100.f;
}
CGPoint point = self.BackScrollView.contentOffset;
point = CGPointMake(point.x, 0);
[UIView animateWithDuration:0.25 animations:^{
self.BackScrollView.contentOffset = point;
}];
}
return YES;
}
注意:需要遵守 UIScrollViewDelegate 和 textView/textFiled的代理。需要该页面的父视图是UIScrollView,才能保证弹出键盘时页面向上移动,收起键盘时页面向下移动。代码中的self.BackScrollView就是对应的父视图,使用时请替换掉。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS
# 键盘的收起以及处理键盘遮挡
# TextFiled与TextView
# 键盘遮挡
# iOS项目开发键盘弹出遮挡输入框问题解决方案
# 解决移动端 ios 系统键盘遮挡的问题
# IOS NSNotification 键盘遮挡问题的解决办法
# iOS 防键盘遮挡的实例
# iOS中表单列表样式键盘遮挡的解决方案
# 弹出
# 的是
# 只需
# 这两个
# 希望能
# 当我们
# 这篇文章
# 谢谢大家
# 会将
# 时请
# 输入框
# 自动弹出
# NSNotification
# action
# initWithTarget
# selector
# UITapGestureRecognizer
# defaultCenter
# singleTapGR
# nc
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
js实现点击每个li节点,都弹出其文本值及修改
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
英语简历制作免费网站推荐,如何将简历翻译成英文?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
高端网站建设与定制开发一站式解决方案 中企动力
iOS发送验证码倒计时应用
在线教育网站制作平台,山西立德教育官网?
怎么用AI帮你设计一套个性化的手机App图标?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
动图在线制作网站有哪些,滑动动图图集怎么做?
Android Socket接口实现即时通讯实例代码
制作电商网页,电商供应链怎么做?
教你用AI润色文章,让你的文字表达更专业
使用C语言编写圣诞表白程序
如何获取上海专业网站定制建站电话?
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
想要更高端的建设网站,这些原则一定要坚持!
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
网站制作企业,网站的banner和导航栏是指什么?
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel如何处理异常和错误?(Handler示例)
5种Android数据存储方式汇总
Android滚轮选择时间控件使用详解
详解jQuery中的事件
教你用AI将一段旋律扩展成一首完整的曲子
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
EditPlus中的正则表达式实战(5)
如何在万网主机上快速搭建网站?
JS经典正则表达式笔试题汇总
如何快速搭建高效香港服务器网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
怎样使用JSON进行数据交换_它有什么限制
上一篇:如何集成JWT认证?
上一篇:如何集成JWT认证?

