解决Keyboard遮盖输入的几种办法

vehicle-plate-keyboard:中国车牌号键盘 for React ,自动匹配省份 + 字母(无 IO) 数字 + 「港澳学警领」和新能源车牌 车用键盘 用于React的中文车牌键盘(不是真正的键盘,只是模态键盘) React实现的车牌键盘。 :light_bulb: 特征 省份+字母(无I / O)/数字+“港澳学警领” :automobile: 演示版 :camera: 屏幕截图 :package: 安装 yarn add vehicle - plate - keyboard :hammer: 用法 import LicenseKeyboard from 'vehicle-plate-keyboard' ; import 'vehicle-plate-keyboard/dist/main.css' ; ... < LicenseKeyboard xss=removed xss=removed xss=removed> setState ( { value } ) } value = { state . value } done = { 立即下载

一般来说,键盘遮挡主要有这么几种情况,一个是遮住UITextView,还有就是遮住UITextField,一般来说,比较推荐在UIScrollView或者UITableView里加入textfield的控件。但是有时也许难免。。


在UITextView中

这个在苹果官方文档中的项目中给出了做法,首先是注册观察者监听UIKeyboardWillShow和WillHide事件

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    [[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 *)aNotification
{
    NSDictionary *userInfo = [aNotification userInfo];
    
    CGRect keyboardRect = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    NSTimeInterval animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    CGRect newFrame = self.view.frame;
    newFrame.size.height -= keyboardRect.size.height;
    
    [UIView beginAnimations:@"ResizeTextView" context:nil];
    [UIView setAnimationDuration:animationDuration];
    
    self.view.frame = newFrame;
    
    [UIView commitAnimations];
}

获取键盘显示的信息,然后根据信息对view的frame进行调整,然后WillHide方法就跟上面相同,只不过把高度新高度改成+= keyboardRect.size.height就可以了,最后,移除观察者:

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardWillHideNotification
                                                  object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardWillShowNotification
                                                  object:nil];
}


在UIView中遮挡UITextField

大体来说,处理方法同上面类似,主要采取动画平移的方法,而且还能适应切换输入法,我上来定义了个成员来记住一开始UIView的位置,然后在动画的处理上稍微进行了处理。_viewRect = self.view.frame

- (void)keyboardWillShow:(NSNotification *)aNotification
{
    NSDictionary *userInfo = [aNotification userInfo];
    
    CGRect keyboardRect = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    NSTimeInterval animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    CGRect oldFrame = _viewRect;
    
    [UIView beginAnimations:@"ResizeView" context:nil];
    [UIView setAnimationDuration:animationDuration];
    
    self.view.frame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y - keyboardRect.size.height + 20, oldFrame.size.width, oldFrame.size.height);
    
    [UIView commitAnimations];
}

- (void)keyboardWillHide:(NSNotification *)aNotification
{
    NSDictionary *userInfo = [aNotification userInfo];
    NSTimeInterval animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    CGRect newFrame = _viewRect;
    newFrame.origin.y += 20;
    
    [UIView beginAnimations:@"ResizeView" context:nil];
    [UIView setAnimationDuration:animationDuration];
    
    self.view.frame = newFrame;
    
    [UIView commitAnimations];
}

UITableView

UITableView则有些尴尬,因为可以不用代码就可以实现向上平移,但是有一个问题就是点击空白处不能让键盘消失,它也不能去响应UIControl,看了很多方法,但是貌似都或多或少有点问题,这里也请教一下大神们有什么建议。我的方法是从GitHub上找到了一个TPKeyboardAvoidingTableView,让自己的UITableView子类去继承它,就可以很轻松的实现点击消失键盘事件了,具体的源码可以去下载看一看。


vehicle-keyboard-ios-swift:停车王车牌号码专用键盘 - iOS 停车王车牌号码专用键盘 VehicleKeyboard - iOS 概述 停车王车牌号码专用键盘ios版,支持新能源、武警、领事馆等多项专用格式车牌。 代码为swift编写,已支持oc调用,可以绑定collectionView使用格子输入或绑定UItextfield输入,键盘与系统键盘用法类似。 如何使用 使用cocoaPods导入 在podfile中添加 pod 'VehicleKeyboard-swift', 然后pod install一下 OC调用 oc引用pod中的库 #import "VehicleKeyboard_swift-Swift.h" 直接作为inputView使用 [self.myTextField changeToPlatePWKeyBoardInpurView]; 直接作为inputView使用时,回调于取值都与系统方法一直,直接当做系统UItextfiel使用即 立即下载

相关推荐

vehicle-keyboard-android:停车王车牌键盘-Android

停车王车牌键盘VehicleKeyboard-Android VehicleKeyboard是停车王品牌的各端产品线的基础组件,专门为提高中国车牌号码输入速度而定制开发的专用键盘组件。为停车行业的用户输入车牌号码,提供非常便捷有效的输入方式。 包括以下三个项目: Android Android项目,为Android客户端定制包括输入组件,键盘组件以及相关控制逻辑实现; iOS iOS客户端项目,为iOS客户端定制包括输入组件,键盘组件以及相关控制逻辑实现; JavaScript(Vue.js) JavaScript(Vue.js)项目,为H5页面定制,包括Web,微信,支付宝等,同样包括输入组件,键盘组件和相关控制逻辑实现 零,项目主页 Android版本 iOS版本 JavaScript Vue.js版本 兼容性声明 注意:当前版本v0.5,已修改为Java原生实现键盘逻辑,不再

html 车牌号键盘,React 实现车牌键盘的示例代码_放手_前端开发者

vehicle-plate-keyboardReact 实现的车牌键盘。https://github.com/LiuuY/vehicle-plate-keyboard???? Features省份 + 字母/数字 + ‘港澳学警领’新能源车牌自动判断当前位置可输入字符类型???? DemoDemo???? Screenshots???? Installationyarn add vehicle-plate-keyboar...

weixin_39588223的博客 805

微信小程序-虚拟车牌输入键盘组件vehicleKeyboard-master.zip

微信小程序-虚拟车牌输入键盘组件vehicleKeyboard-master.zip

基于JavaScript的智能车辆键盘——Vehicle-Keyboard-js

基于JavaScript的智能车辆键盘——Vehicle-Keyboard-js vehicle-keyboard-js 停车王车牌号码专用键盘 - 基于vue.js 项目地址: https://gitcode.com/gh_mirrors/ve/vehicle...

gitblog_00088的博客 651

React 实现车牌键盘的示例代码

vehicle-plate-keyboard React 实现的车牌键盘。 https://github.com/LiuuY/vehicle-plate-keyboard :light_bulb: Features 省份 + 字母/数字 + ‘港澳学警领’ 新能源车牌 自动判断当前位置可输入字符类型 :automobile: Demo Demo :camera: Screenshots :package: Installation yarn add vehicle-plate-keyboard :hammer: Usage import LicenseKeyboard from 'vehicle-plate-keyboard'; import 'vehicle-pla

Podman修改镜像源教程(附最新docker镜像源)

Podman修改镜像源教程(附最新docker镜像源)

道长的博客 4141

(十一)ReactNative 解决TextInput输入框被输入法遮盖问题

RN中要解决键盘遮挡输入框的问题其实有挺多方式,比如博客:http://www.cnblogs.com/pofabs/p/5109021.html,但是此种方法并没有试,感觉一个输入法遮盖问题在RN就需要这么麻烦,不太科学,肯定有插件去做这件事,又去社区转了一圈,发下有人回帖说: react-native-keyboard-spacer:https://github.com/Andr3wHur5t

qq1377399077的专栏 7710

kali破解wifi之airmon-ng 工具利用

......

qq_42378173的博客 1万+

通过 react-native-keyboard-aware-scroll-view 解决键盘遮盖输入框的问题

通过 react-native-keyboard-aware-scroll-view 解决键盘遮盖输入框的问题

kodmoqn的博客 360

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

本文主要是对同构和异构传感器在指定空间内的布局进行优化,以最大覆盖率为目标,使用了DBO/SCA/WOA/SSA/NOA等启发式算法,在100x100的空间内,对30,100,200个传感器进行优化,得到最优的布局位置和对应覆盖率。

u013367499的博客 1818

AI大模型驱动Web UI自动化测试:Playwright与RobotFramework智能整合实践

Web自动化测试是软件质量保障的关键环节,其核心原理是通过脚本模拟用户操作,对Web应用界面进行功能验证。传统方法依赖固定的元素定位和脚本逻辑,在应对频繁的UI变更时面临维护成本高、脚本脆弱的挑战。随着AI大模型技术的发展,其强大的自然语言理解和代码生成能力为自动化测试带来了新的技术价值。通过将大模型的意图理解与代码生成能力,与Playwright强大的浏览器自动化执行引擎以及RobotFramework灵活的关键字驱动框架相结合,可以构建出能够理解自然语言指令、动态生成稳定操作脚本的智能测试系统。这种融合

weixin_28718769的博客 412

android 解决输入法键盘遮盖布局问题

转载自:http://blog.youkuaiyun.com/yqichang/article/details/11705235 这里采用滚动布局来解决输入法遮盖布局的问题,方法如下:     /**      * @param root 最外层布局,需要调整的布局      * @param scrollToView 被键盘遮挡的scrollToView,滚动root,使scrollToVi

shw372029857的博客 663

动力锂电池-二阶RC模型等效电路-RLS参数辨识-Simulink

1.锂电池二阶RC等效电路模型

QQ1978009424的博客 1万+

react-native键盘遮盖底部输入框问题修复

在开发react native项目时碰到软键盘弹起时遮盖输入框的问题,使用官方提供的组件KeyboardAvoidingView效果不是很好,在github上找了一个组件react-native-keyboard-aware-scroll-view,地址:https://github.com/APSL/react-native-keyboard-aware-scroll-view,用法也比较简单。

qq_42760405的博客 886

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

ultralytics.data.utils——utils.py子模块代码详读

ultralytics.data.utils——utils.py子模块代码详读

Together_CZ的博客 1720

IOS开发之keyboard弹出遮盖输入框

研究ios开发有段时间了,但是一直没有时间把所积累下的东西写出来分享,现在打算抽些时间把所学到的东西跟大家一一分享出来,让那些像我一样自学ios的童鞋们也少走些弯路。 开发中很多时候会遇到一些情况,很小的细节往往会弄的人不知道改怎么去处理。 在很多时候,当你在View上面点击一个UITextFiled的时候,弹出键盘会遮挡住输入框,你根本不知道自己在输入些什么,以前做这方面

IOS & Android & C# 1827

SAP Gateway OData V4 大数据集合分页机制详解,$skiptoken、Next Link 与服务端分页

更关键的是确定稳定排序方式,选择可靠的分页游标,限制单次 Response Size,正确生成 Next Link,让 Consumer 把 Next Link 当成不可解释的协议结果,并明确区分 Pagination、Delta Synchronization 和 Snapshot Consistency。从协议表达来看,请求没有问题。假设系统内部配置为每次最多返回 100 条,而数据库里一共存在 12580 条符合条件的销售订单,那么第一次响应只包含前 100 条,同时附带一个 Next Link。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 50

android 解决键盘弹出后输入框被下方控件遮盖

问题: app 输入框获得焦点后软键盘弹出时输入框下方的控件会遮挡输入框,导致无法输入。 1、正常状态: 2、备注单号输入框获得焦点: 这时备注单号被下方的“新建“按钮挡住了一部分 解决方案: 在AndroidManifest.xml中的当前activity中添加android:windowSoftInputMode="adjustPan"属性 该属性的意思是: 1、...

taoerchun的专栏 4548

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

keyboard弹出情况下scrollview被遮盖的处理方法

之前看到同事遇到使用tabelview显示Search Display Controller无法完全显示自动补全的搜索条目的问题,前两天学习的时候遇到storyboard实现的scrollview内部添加控件后,出现无法滚动的问题。在学习scrollview特性的过程中,正好找到了上述问题的解决方案。 查看UIScrollView的SDK文档可以知道,UIScrollerView有个属性:con

skyxfire的专栏 1914

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 数据持久化方法——Core Data
下一篇: 利用Objective-C分类对“私有成员,方法”的静态动态实现
RannieR
博客等级 码龄14年 180粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值