iOS 基于键盘的编程

iOS开发中设置键盘样式风格的编程方法 通过编程,我们可以更改键盘的外观和行为,以提供更好的用户体验。下面将介绍如何在iOS开发中实现定制键盘样式风格的方法,并提供相应的源代码示例。上述示例中创建了一个名为CustomViewController的自定义视图控制器,并遵循了UIKeyInput协议。该视图控制器具有一个名为inputText的属性,用于存储用户输入的文本。通过以上代码,我们可以实现在iOS应用中设置键盘样式风格的编程方法。同时,我们将自定义键盘视图的。属性设置为自定义视图控制器,以便在按钮点击事件中调用自定义视图控制器的方法。 阅读详情

首先,你得监听键盘的事件,最基本的两个事件:

UIKeyboardWillShowNotification

UIKeyboardWillHideNotification

UIKeyboard...

iOS 5新增加了一些

UIKeyboardDidChangeFrameNotification(will)

一般情况下,前两个事件已经可以完成你要做的事情。在你的事件处理方法中加上NSNotification参数可以为你获得更多的东西:

view plainprint?

- (void)keyboardWillShow:(NSNotification *)notification 

{  

    CGPoint beginCentre = [[[notification userInfo] valueForKey:UIKeyboardCenterBeginUserInfoKey] CGPointValue]; 

    CGPoint endCentre = [[[notification userInfo] valueForKey:UIKeyboardCenterEndUserInfoKey] CGPointValue]; 

    CGRect keyboardBounds = [[[notification userInfo] valueForKey:UIKeyboardBoundsUserInfoKey] CGRectValue]; 

    CGRect keyboardFrames = [[[notification userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 

    UIViewAnimationCurve animationCurve = [[[notification userInfo] valueForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; 

    NSTimeInterval animationDuration = [[[notification userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; 

} 

 如果你要在程序中使用键盘的高度和宽度,永远不要尝试去手动指定,动态获取也很简单而且一定准确,不会出现键盘

挡住输入框的问题。

你可以利用这些参数把动画做的和键盘一致。假设你要把一个控件放在Window上,并且想让它的交互方式和键盘一样,

如果只是简单的做个向下偏移动画并不能很好的完成,因为你还要考虑从导航栏中Pop出来的时候,这个时候的键盘动画是

在x轴上偏移的,你用UIKeyboardFrameEndUserInfoKey获取的frame可以很准确的做到。

 

如果在某些特殊的字段上,你不想用默认的键盘,而是用类似于Picker这样的拾取器,你只需要设置inputView就行了,用你自定义的视图去替换掉键盘;如果你想在键盘上面再增加一个视图,比如toolbar,那么你可以不用自己对toolbar的位置进行控制,只需要设置inputAccessoryView就行了,这个值默认为nil,设置的视图将在你的控件变成第一响应者的时候显示在inputView的上方。

\\

 

在UIScrollView(UITableView继承于它)上,当你触碰控件使之变成第一响应者的时候,系统会自动调整位置,避免键盘挡住控件。如果在代码中用becomeFirstResponder使之变成第一响应者将不会出现自动调整。你可以设置contentOffset去手动调整。其他视图,最简单的方法就是修改控件的frame属性,让控件总是显示在可见区域



常见通知:

UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; // nil
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification;  // nil
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification;     // nil
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification;     // nil

// Each notification includes a nil object and a userInfo dictionary containing the
// begining and ending keyboard frame in screen coordinates. Use the various UIView and
// UIWindow convertRect facilities to get the frame in the desired coordinate system.
// Animation key/value pairs are only available for the "will" family of notification.
UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;

UIKIT_EXTERN NSString *const UIKeyboardFrameBeginUserInfoKey        NS_AVAILABLE_IOS(3_2); // NSValue of CGRect
UIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey          NS_AVAILABLE_IOS(3_2); // NSValue of CGRect
UIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of double
UIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey    NS_AVAILABLE_IOS(3_0); // NSNumber of NSUInteger (UIViewAnimationCurve)

// Like the standard keyboard notifications above, these additional notifications include
// a nil object and begin/end frames of the keyboard in screen coordinates in the userInfo dictionary.
UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification  NS_AVAILABLE_IOS(5_0);
UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification   NS_AVAILABLE_IOS(5_0);

// These keys are superseded by UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey.
UIKIT_EXTERN NSString *const UIKeyboardCenterBeginUserInfoKey   NS_DEPRECATED_IOS(2_0, 3_2);
UIKIT_EXTERN NSString *const UIKeyboardCenterEndUserInfoKey     NS_DEPRECATED_IOS(2_0, 3_2);
UIKIT_EXTERN NSString *const UIKeyboardBoundsUserInfoKey        NS_DEPRECATED_IOS(2_0, 3_2);


删除iPhone键盘中常用表情符号的方法(编程实现) 通过创建自定义键盘视图并替换默认键盘,我们可以自由地控制表情符号的显示和操作。在iPhone上,键盘提供了一组常用的表情符号,但有时候我们可能希望自定义该列表并删除一些不常用的表情符号。然后,打开"Main.storyboard"文件,删除默认的视图控制器,并添加一个新的。现在,当用户点击文本字段时,将显示自定义的键盘视图,其中包含我们添加的表情符号列表。首先,我们需要创建一个新的自定义键盘视图,该视图将替代默认的键盘,并显示我们自定义的表情符号。最后,我们需要将自定义的键盘视图替换为默认的键盘。 阅读详情

相关推荐

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

iOS 基于键盘的编程所需技巧

首先,你得监听键盘的事件,最基本的两个事件: UIKeyboardWillShowNotification UIKeyboardWillHideNotification UIKeyboard... iOS 5新增加了一些 UIKeyboardDidChangeFrameNotification(will) 一般情况下,前两个事件已经可以完成你要做的事情。在你的事

Bannings的专栏 1万+

手把手教你用DLP4500投影仪玩转结构光3D扫描(附固件烧录与序列设置避坑指南)

本文详细解析了如何使用DLP4500投影仪搭建结构光3D扫描系统,涵盖硬件组装、固件烧录、图案生成与优化等全流程。重点解决了固件烧录失败、图像格式错误等常见问题,并提供了实用的避坑指南和进阶技巧,帮助读者快速掌握DLP4500在3D扫描中的应用。

weixin_42662293的博客 300

iOS 键盘的编程所需技巧

首先,你得监听键盘的事件,最基本的两个事件: UIKeyboardWillShowNotification UIKeyboardWillHideNotification UIKeyboard... iOS 5新增加了一些 UIKeyboardDidChangeFrameNotification(will) 一般情况下,前两个事件已经可以完成你要做的事

objectively的专栏 688

SmsForwarder v6.4.0 + Flask API 实战:5步搭建手机验证码自动化接收服务

本文详细介绍了如何利用SmsForwarder v6.4.0和Flask API构建企业级验证码自动化处理系统。通过5个关键步骤,包括系统架构设计、Android端配置、Flask服务端实现、企业级部署方案以及实战应用场景扩展,帮助开发者高效处理短信验证码,提升自动化测试和数据采集的工作效率。

weixin_30292745的博客 392

CentOS校园网Web Portal认证自动化实战

Web Portal认证是一种基于HTTP重定向与表单提交的强制网络准入机制,其原理是网关劫持未认证流量并跳转至登录页,验证通过后通过Cookie维持会话授权。该技术广泛应用于高校、机场、酒店等场景,核心价值在于细粒度访问控制与用户身份绑定。典型应用包括Linux命令行环境下的校园网接入、无GUI设备的自动联网、以及实验室集群的集中认证管理。本文聚焦CentOS系统,深入解析curl、cookie持久化、动态表单参数提取等关键技术环节,提供可调试、可复现、可工程化的完整认证流水线。

weixin_30522983的博客 264

在ios编程中 针对 UIWebView中的 弹出的键盘 进行 关闭

在UIWebView中,如果我们使用了Input 这个element ,ios会自动弹出 键盘。但是不会自动关闭。 如果我们需要在 UIWebView 中的其他部分点击 来自动关闭这个 键盘。应该怎么处理? 方法如下: 首先截获 UIWebView的touch事件。 处理方法可以参考  http://blog.youkuaiyun.com/remote_roamer/arti

vshpper的专栏 1684

时序基础模型Timer-S1:十亿参数如何革新时间序列预测

时间序列预测是数据分析与机器学习中的核心任务,旨在基于历史数据预测未来趋势。其原理在于捕捉数据中的趋势、周期性和季节性等时序依赖关系。这项技术的价值在于赋能业务决策,广泛应用于金融风控、能源管理、物联网监控和供应链优化等关键场景。传统方法依赖针对特定任务的专用模型,面临泛化能力弱和开发成本高的挑战。本文聚焦的时序基础模型,通过在海量跨领域数据上进行预训练,学习时序通用模式,并结合十亿级参数带来的强大容量,实现了性能的显著突破。这种范式转变,使得模型能够像“全科医生”一样,通过少量数据微调即可快速适应新任务,

weixin_29164843的博客 268

从零开始iOS8编程【键盘操作】

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠:点击捐赠 Cocos2d-X×××:点我传送 键盘输入 在iPhone应用程序中,键盘输入处理比较麻烦。 在输入完成后我们需要自己关闭键盘。 在...

weixin_33785972的博客 109

AI大模型学习(14)AI 小白入门!用 OpenCV+Python 打造人体姿态识别系统,超详细教程来了

这篇教程介绍了如何使用Python+OpenCV+MediaPipe搭建入门级人体姿态识别系统。主要内容包括:人体姿态识别的应用场景(如健身APP、体感游戏)、开发环境搭建(安装Python、OpenCV和MediaPipe库)、核心代码实现(通过30行代码完成摄像头姿态检测),以及进阶功能开发(深蹲动作纠正算法和PPT体感控制器)。教程详细解析了MediaPipe的BlazePose模型架构和33个关键点的生理学意义,并提供了多线程优化等性能提升方案。该项目适合AI初学者实践,无需复杂算法即可实现实时人体

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1549

本文将详细介绍如何在 Qt (C++) 应用程序中集成 osgEarth,加载三维数字地球,并在指定经纬度添加三维模型(如飞机、建筑等)。

OSG 与 Qt 的交互通常需要处理 OpenGL 上下文。osgEarth 3.x 提供了对 Qt 的较好支持,或者可以使用。在普通 OSG 程序中,你需要手动处理坐标系转换将经纬度转为笛卡尔坐标 (XYZ)。这是实现的关键,将 OSG 的渲染循环集成到 Qt 的事件循环中。第三方库,但在本教程中,我们将展示一种通过继承。,将 Qt 的输入事件转换为 OSG 理解的。事件,这是实现交互(旋转地球、缩放)的基础。来嵌入 OSG 视图的标准方法。在这里我们初始化地球并添加模型。节点简化了这一过程。

qq_45859163的博客 1044

键盘控制

Beginning iOS 4 Application Development 6. Keyboard inputswhAt yOu will leArn in thiS chApterHow to customize the keyboard for diff erent types of inputsHow to hide the keyboard when you are d...

dianxuanfan4560的博客 122

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1951

[小白学iOS编程04]UIDatePicker控件学习(键盘处理)

[小白学iOS编程04]UIDatePicker控件学习(键盘处理) 本博文通过一个简单的例子来学习UIDatePicker中常见的方法。

程序小白的博客 964

B站评论情感分析实战:Python批量爬取+BERT正负向分类,精准度92%(附完整代码)

用技术手段自动化挖掘用户真实情感,比人工分析更高效、更客观。这套方案的精度能稳定在90%左右,完全满足实际应用需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1025

Devexpress16.2.6破解工具

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

告别键盘通知噩梦:RxKeyboard让iOS键盘交互丝滑如流水

你是否还在为iOS键盘通知处理而头疼?是否厌烦了冗长的通知注册代码和复杂的状态管理?是否在实现交互式键盘-dismiss时遇到各种诡异的布局问题?本文将带你彻底解决这些痛点,通过RxKeyboard框架以响应式方式优雅处理键盘交互,让你的应用界面交互体验提升一个档次。 读完本文后,你将能够: - 掌握RxKeyboard的核心API和使用方法 - 轻松实现UIScrollView与键盘的完美适配...

gitblog_00827的博客 743

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

告别键盘通知地狱:RxKeyboard 让 iOS 键盘交互丝滑如流

你是否还在为 iOS 键盘通知(Notification)的繁琐处理而头疼?是否曾因键盘弹出导致输入框被遮挡而手忙脚乱?是否在实现交互式键盘 dismiss 时陷入手势冲突的泥潭?本文将带你彻底解决这些问题,通过 RxKeyboard——一个基于响应式编程(Reactive Programming)的键盘管理库,让你用几行代码就能实现专业级的键盘交互体验。 读完本文你将获得: - 掌握 RxKe...

gitblog_01134的博客 395

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

推荐开源项目:KOKeyboard - 打造高效iOS编程输入体验

推荐开源项目:KOKeyboard - 打造高效iOS编程输入体验 在移动设备日益成为编程爱好者的新战场时,一个高效的输入工具显得尤为重要。今天,我们为您带来一款专为提升iOS设备文本编辑效率而设计的开源神器 —— KOKeyboard。 项目介绍 KOKeyboard是一个iOS平台上的键盘扩展组件,它通过在标准屏幕键盘上额外增加一行特制的滑动按钮,彻底改变了程序员在iPad等iOS设备上编写...

gitblog_01087的博客 566

ios开发笔记

1.ios的协议 ios的协议类似Java里的接口,起用法是一模一样的,目前只理解到这儿,以后有了新的理解在补充,基本用法如下: 1 @protocol BlueInterface 2 3 - (void) foundDevice:(CBPeripheral *) cbPeripheral; 4 - (void) disconnectDevicw:(CBPeripheral *) ...

weixin_34138521的博客 97

UITextField Delegate 键盘弹起

UITextField的键盘收起及外部点击 2013年04月08日 ⁄ 综合 ⁄ 共 473字 ⁄ 字号 小 中 大 ⁄ 评论关闭 1.首先要实现其协议UITextFieldDelegate 2.self.account_field.delegate = self; 3.实现如下方法 /*  基于UIView点击

微笑莫彷徨 612

iOS: 让键盘消失的的4种方法

在iOS app中,只要用到编辑框(UITextField)的地方,就得处理键盘消失 (dismiss keyboard)。 我先后用过4种方法,来处理键盘消失的问题。 1. 通过UITextFiledDelegate,来释放第一响应者 (resignFirstResponder); 这种通过delegate释放键盘的代码如下:   - (BOOL)textFieldShould

chenyxh2005的专栏 899

[IOS]App Extension编程指南(iOS8/OS X v10.10):扩展类型--自定义键盘

本节由CocoaChina翻译组成员星夜暮晨(博客)翻翻译自苹果官方文档  App Extension Programming Guide--App Extension Types--Custom Keyboard  一节,敬请勘误。 通过使用第三方输入法替换系统原生输入法,用户可以实现一些特殊的功能。比如一个特别新颖的输入方式,或输入iOS原生输入法并不支持的语言。第三方输入法的基本功

欲买桂花同载酒,终不似,少年游。 1617
上一篇: 基于xmpp协议的多端即时通讯方案
下一篇: unbalanced calls to begin/end appearance transitions for uiviewcontroller的解决方法
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值