- 浏览: 537804 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘不同高度变换按钮位置,再不做输入的时候点击按钮能够隐藏键盘,这种方式在很多软件上都有体现,然后在网上查阅了关于检测键盘高度一些相关知识,以下是一个Demo,代码有很多需要优化地方,仅供需要者参考;
先看效果:
[img]
[/img]
[img]
[/img]
[img]
[/img]
[img]
[/img]
首先是我们在ViewDidLoada()中注册了两个通知,[NSNotificationCenterdefaultCenter],检测键盘动态,一个是键盘将要弹出的时候,另一个是键盘将要退出时候键盘的信息
检测键盘消息一个六种,根据字面意思差不多都能说明函数作用
UIKeyboardWillShowNotification 通知将要发布时候显示键盘
UIKeyboardDidShowNotification 通知发布后立即显示键盘
UIKeyboardWillHideNotification 通知发布前撤销键盘
UIKeyboardDidHideNotification 通知发布后撤销键盘
UIKeyboardWillChangeFrameNotification 通知发布前迅速变化的框架的键盘。
UIKeyboardDidChangeFrameNotification 通知发布后立即改变在键盘的框架。
NSLog(@"%@",NSStringFromSelector(_cmd));是我特意加上去的,它能在控制台显示打印出当前程序所调用的函数,我在下面每个函数都加了这一句,当我进行不同操作的时候,打印出被调用函数名,在调试程序时候比较适用吧;
[img]
[/img]
注册消息通知后,实现通知所响应的方法:
在这个函数方法中值得探讨的是关于键盘所包含信息,因为每一次键盘弹出的时候也是动画形式弹出,他的坐标位置大小包含在userInfo的字典中,现在我用
NSLog(@"-->info:%@",info);打印出info对象,这些信息都可以在不同存储类型,取值的时候注意取值方式,此处只是提一提,希望以后有时间在做探讨,
[img]
[/img]
在这一段代码上,后面注释了5行,因为打算当键盘推出的时候,按钮从视图上移除,或者释放按钮,但是都导致了应用程序崩溃,后来就没有释放和移除操作了
源码:
先看效果:
[img]
[/img]
[img]
[/img]
[img]
[/img]
[img]
[/img]
首先是我们在ViewDidLoada()中注册了两个通知,[NSNotificationCenterdefaultCenter],检测键盘动态,一个是键盘将要弹出的时候,另一个是键盘将要退出时候键盘的信息
- (void)viewDidLoad { NSLog(@"%@",NSStringFromSelector(_cmd)); [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; }
检测键盘消息一个六种,根据字面意思差不多都能说明函数作用
UIKeyboardWillShowNotification 通知将要发布时候显示键盘
UIKeyboardDidShowNotification 通知发布后立即显示键盘
UIKeyboardWillHideNotification 通知发布前撤销键盘
UIKeyboardDidHideNotification 通知发布后撤销键盘
UIKeyboardWillChangeFrameNotification 通知发布前迅速变化的框架的键盘。
UIKeyboardDidChangeFrameNotification 通知发布后立即改变在键盘的框架。
NSLog(@"%@",NSStringFromSelector(_cmd));是我特意加上去的,它能在控制台显示打印出当前程序所调用的函数,我在下面每个函数都加了这一句,当我进行不同操作的时候,打印出被调用函数名,在调试程序时候比较适用吧;
[img]
[/img]
注册消息通知后,实现通知所响应的方法:
- (void)handleKeyboardDidShow:(NSNotification *)notification { NSLog(@"%@",NSStringFromSelector(_cmd)); NSDictionary *info = [notification userInfo]; CGRect keyboardFrame; [[info objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame]; CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size; CGFloat distanceToMove = kbSize.height; NSLog(@"---->动态键盘高度:%f",distanceToMove); if (exitButton == nil) { exitButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; CGRect exitBtFrame = CGRectMake(self.view.frame.size.width-40, self.view.frame.size.height - distanceToMove, 40.0f, 30.0f); exitButton.frame = exitBtFrame; [exitButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateNormal]; [self.view addSubview:exitButton]; } exitButton.hidden=NO; [self adjustPanelsWithKeyBordHeight:distanceToMove]; [exitButton addTarget:self action:@selector(CancelBackKeyboard:) forControlEvents:UIControlEventTouchDown]; }
在这个函数方法中值得探讨的是关于键盘所包含信息,因为每一次键盘弹出的时候也是动画形式弹出,他的坐标位置大小包含在userInfo的字典中,现在我用
NSLog(@"-->info:%@",info);打印出info对象,这些信息都可以在不同存储类型,取值的时候注意取值方式,此处只是提一提,希望以后有时间在做探讨,
[img]
[/img]
在这一段代码上,后面注释了5行,因为打算当键盘推出的时候,按钮从视图上移除,或者释放按钮,但是都导致了应用程序崩溃,后来就没有释放和移除操作了
- (void)handleKeyboardWillHide:(NSNotification *)notification { NSLog(@"%@",NSStringFromSelector(_cmd)); if (exitButton.hidden==NO) { exitButton.hidden = YES; } // if (exitButton.superview) // { // [exitButton removeFromSuperview]; // [exitButton release]; // } }
-(void)adjustPanelsWithKeyBordHeight:(float) height { NSLog(@"%@",NSStringFromSelector(_cmd)); if (exitButton) { CGRect exitBtFrame = CGRectMake(self.view.frame.size.width - 40, self.view.frame.size.height - height-30, 40.0f, 30.0f); exitButton.frame = exitBtFrame; [self.view addSubview:exitButton]; } // UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; // if (exitButton.superview == nil) // { // [tempWindow addSubview:exitButton]; // // 注意这里直接加到window上 // } }
-(void)CancelBackKeyboard:(id)sender { NSLog(@"%@",NSStringFromSelector(_cmd)); [textField resignFirstResponder]; } - (void)viewDidUnload { [self setTextField:nil]; exitButton=nil; [super viewDidUnload]; // Release any retained subviews of the main view. } - (void)dealloc { [textField release]; [exitButton release]; [[NSNotificationCenter defaultCenter] removeObserver:self];//移除所注册的通知 [super dealloc]; }
源码:
- keyBoardButton.zip (87.9 KB)
- 下载次数: 1
发表评论
-
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 1008今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 710有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1268看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1152[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 809在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 823本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 1013通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1128这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1160我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1073本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1297先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1112感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1065本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1167本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 925在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1746本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1192今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1369文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 561先看一下效果图: [img] ... -
iphone开发之适配iphone5
2013-06-05 11:15 1110iphone5出来了,从不用适配的我们也要像android一样 ...
相关推荐
在iOS开发中,宏定义是Objective-C编程中一个非常实用的工具,它们可以用来简化代码、提高效率并增强代码的可读性。标题中的“iOS开发中那些高效常用的宏”指的是开发者在iOS应用开发过程中经常使用的宏定义,这些宏...
### 新风系统APP知识点解析 #### 一、新风系统APP概述 新风系统APP是一款专为造梦者新风系统设计的应用程序,旨在让用户能够通过智能手机远程控制和监控家中的新风系统设备。该应用支持安卓和苹果两种操作系统,...
本文依据“新风系统设计PPT学习教案”文件内容,详细阐述新风系统设计的关键知识点,包括新风量的确定、新风负荷的计算以及新风设备的选择与布置。 首先,新风量的确定是设计新风系统时的基础。它必须基于一定的...
### Honeywell智能家居新风系统知识点解析 #### 一、引言 Honeywell智能家居新风系统用户手册旨在为用户提供全面的操作指南和维护建议,确保用户能够充分利用该系统带来的诸多好处。本手册主要针对Honeywell的HR150...
在商业活动中,合同是双方或多方在平等自愿基础上达成的,具有法律约束力的协议,是保障交易顺利进行的重要工具。本文将围绕“新风合同”这一特定主题,结合建筑、环境工程和室内空气质量改善领域,对可能出现在新风...
新风系统作为改善室内空气质量的设备,逐渐受到更多家庭和企业的青睐。它通过一定的物理原理和技术创新,实现室内空气的持续更新和过滤,为人们的居住和工作环境带来了健康和舒适。 新风系统的基本工作原理是通过...
作为一家在技术和制造业上占世界领先地位的企业,霍尼韦尔在全球拥有12万名员工,并在纽约、伦敦和芝加哥的证券市场上有着“HON”的交易代码,同时也是“标准普尔500指数”的组成部分。 霍尼韦尔健康家居产品部的...
专业新风系统资料PPT学习教案.pptx
大机房新风系统原理介绍及说明 水膜新风系统 湿膜新风 水淋新风
在中国,新风系统虽未成为普遍标准,但近十年来,随着人们对空气质量问题的关注度提高,新风系统开始被引入并逐渐应用于各种建筑中。 新风系统的工作原理是通过主机和新风管道,将室内的污染空气排出室外,同时引入...
新风系统设计是建筑环境工程中的重要组成部分,其主要目的是为室内环境提供清新、健康的空气,同时保持室内气候的适宜性。以下是对新风系统设计关键知识点的详细解析: 1. **新风定义**:新风指的是从室外引入的...
在VCOM公司DDC新风机控制系统模块上了解其基本配置:DDC模块、制冷模块、加热模块、中间继电器、变压器、开关电源、温度控制电路、散热风扇等设备组成。 2. 在VCOM公司DDC新风机控制系统模块上了解其功能,了解...
1. 吊顶全热交换新风机:通常安装在天花板上,具备两台风机和全热交换芯,可回收室内外能量,降低空调热损耗。 2. 轴流风机:设计为筒状,通常安装在墙上,用于消防排烟,也可以提供新风。 3. 双向流新风机:内部...
新风系统,作为一种提高室内空气质量的有效手段,近年来在建筑领域得到了广泛应用。2019年的行业概览报告,结合了2020年的精品研究,为读者提供了全面深入的洞察,揭示了新风系统行业的最新趋势、市场规模、技术发展...
3. **动画功能**:集成的动画模块可能包含播放器功能,使用户可以在网站上展示动态内容,如GIF、Flash或其他动画格式,提高网站的视觉吸引力。 4. **留言功能**:通过内置的留言系统,访客可以与网站管理员进行交流...
"美的新风机组技术手册" 美的新风机组技术手册是美的商用空调研发的新风处理机产品,该产品采用直接膨胀制冷的方法,通过室内换热器强劲而精确的加热和冷却能力来处理室外空气以接近室温的新风处理设备。该产品的...
在新风系统设计中,首要任务是理解通风的基本概念及其目的。通风是通过自然或机械方式实现室内与室外空气的交换,以满足人体对新鲜空气的需求,排除有害气体和热量,同时补充燃烧所需的空气。在设计时,考虑到节能...
综上所述,本文所介绍的新风装置及消毒装置的制作方法,通过巧妙的设计和创新技术,解决了现有新风系统在运行中可能遇到的滤网清洁难题和细菌滋生问题,提高了新风装置的性能,保证了室内空气的清新和健康。...