2019独角兽企业重金招聘Python工程师标准>>>

这个应该是一个通用的任务了吧,键盘弹出来的时候,UITextView(或者UITextField)会被遮挡。
解决的办法就不是很能通用了。
1. 如果有UIScrollView做父view的话只需要滚动到合适的位置即可。
2. 如果没有UIScrollView的话,可以恰当的临时调整一下UITextView的高度,使得最下面一行的输入也能被看到。

下面只对第二种情况说明一下要点:
我的做法是创建一个UITextView的派生类,这样可以方便重用。
(不派生类也是可以的,原理一样。)
注册2个Notification消息,分别是UIKeyboardDidShowNotification和UIKeyboardWillHideNotification

表示键盘已经弹出来和键盘要消失的时候发送。

- (void)registerForKeyboardNotifications {[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWasShow:)name:UIKeyboardDidShowNotificationobject:nil];[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWillBeHidden:)name:UIKeyboardWillHideNotificationobject:nil];
}- (void)unregisterForKeyboardNotifications{[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidShowNotificationobject:nil];[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardWillHideNotificationobject:nil];
}

不过,要注意的是这两个消息不是严格一一对应的。

消息处理:

- (void)keyboardWasShow:(NSNotification *)notification {// 取得键盘的frame,注意,因为键盘在window的层面弹出来的,所以它的frame坐标也是对应window窗口的。CGRect endRect = [[notification.userInfoobjectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];CGPoint endOrigin = endRect.origin;// 把键盘的frame坐标系转换到与UITextView一致的父view上来。if ([UIApplicationsharedApplication].keyWindow && self.superview) {endOrigin = [self.superview convertPoint:endRect.originfromView:[UIApplicationsharedApplication].keyWindow];}CGFloat adjustHeight = originalContentViewFrame.origin.y + originalContentViewFrame.size.height;// 根据相对位置调整一下大小,自己画图比划一下就知道为啥要这样计算。// 当然用其他的调整方式也是可以的,比如取UITextView的orgin,origin到键盘origin之间的高度作为UITextView的高度也是可以的。adjustHeight -= endOrigin.y;if (adjustHeight > 0) {CGRect newRect = originalContentViewFrame;newRect.size.height -= adjustHeight;[UIViewbeginAnimations:nilcontext:nil];self.frame = newRect;[UIViewcommitAnimations];}
}- (void)keyboardWillBeHidden:(NSNotification *)notification{// 恢复原理的大小[UIViewbeginAnimations:nilcontext:nil];self.frame = originalContentViewFrame;[UIViewcommitAnimations];
}

BTW:

现在的云计算貌似已经很火热了,但是分享的渠道还是不能畅通,没有一个合适的分享协议。EverNote写好的笔记想要给人分享,就只有分享到twitter和facebook2个选择。

大家是怎么把笔记分享到博客平台的呢?

oschina有没有开放什么对外的接口,实在不行自己动手给EverNote做个分享的插件吧。

转载于:https://my.oschina.net/dourgulf/blog/80723

自动根据键盘位置调整UITextView的高度相关推荐

  1. IOS UITextView自适应高度

    LOFTER app需要实现了一个类似iPhone短信输入框的功能,它的功能其实蛮简单,就是:[UITextView的高度随着内容高度的变化而变化].实现思路应该是: 在UITextView的text ...

  2. iOS开发-自动隐藏键盘及状态栏

    1.隐藏状态栏 iOS升级至7.0以后,很多API被废止,其中原有隐藏状态栏StatusBar的方法就失效了. 原有方案 [[UIApplication sharedApplication] setS ...

  3. jspdf-html2canvas 自动分页 网页导出pdf 自动根据dom子节点的高度进行分页,避免dom的内容在分页的时候被截断

    jspdf-html2canvas 网页导出pdf 自动根据dom子节点的高度进行分页,避免dom的内容在分页的时候被截断 说明 直接上代码 说明 要导出的内容用 .pdf 包裹 ,默认会以.pdf的 ...

  4. 燕秀计算机打印区域文字高度,CAD 让文字显示在指定区域,自动根据文字内容调整文字高度...

    CAD 让文字显示在指定区域,自动根据文字内容调整文字高度 '********************************************************************* ...

  5. css纵向滚动条自适应,纯css实现完美决对居中 自动滚动条 根据内容宽度、高度自适应,垂直水平居中,自动出现滚动条。.doc...

    纯css实现完美决对居中 自动滚动条 根据内容宽度.高度自适应,垂直水平居中,自动出现滚动条..doc 还剩 3页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内 ...

  6. 开机自动开启键盘灯,键盘F12后2位按键为开启按键

    需要在虚拟机xp系统启动时自动开启键盘灯 c++代码如下: #include "stdafx.h" #include <Windows.h> void main() { ...

  7. html5自动收回键盘,如何监听移动端软键盘的弹出和收回?

    调用移动端的软键盘,一般是和TextInput的操作绑定的. 当点击输入文本框进人输入状态的时候移动端会自动调用软键盘,当输入完毕,点击输入文本框的外部区域或关闭软键盘按钮可完成软键盘收回状态的操作. ...

  8. android自动软键盘,Android自定义软键盘

    MyKeyboard Android自定义键盘的使用 实现步骤 第一步: 1.新建一个xml文件夹放在res目录下面,然后新建xml文件:money_keyboard.xml 2.然后在XML文件中添 ...

  9. IOS实现点击软键盘的Next/Return按钮或者空白处后自动隐藏键盘

    在开发IOS过程中,经常需要用到TextField控件.光标一旦定位到该控件,软键盘就会自动开启,用户能够在其中通过软键盘进行输入.但是,若不对软键盘进行其他操作,它是不会自动关闭的.这样就很有可能降 ...

最新文章

  1. scheduled 一秒钟执行一次_spring boot的Scheduled帮你实现定时任务,spring boot实践(11)...
  2. lotus php,LotusPhp框架目录_PHP教程
  3. springboot多数据源动态切换和自定义mybatis分页插件
  4. tcp和udp的区别?
  5. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析
  6. webstorm中自动插入的代码和ts冲突的解决办法
  7. 克鲁斯卡尔算法(公交站问题)
  8. 【渝粤教育】国家开放大学2018年春季 0004-22T有机合成单元反应 参考试题
  9. xml文件c语言读取函数,读写xml文件的2个小函数
  10. Java:月份的中英文转换
  11. 各类手机开发平台介绍(转载)
  12. 2018/03/01
  13. 编程猫平台 python-编程猫发布高中新课标产品 助力中小学python教育
  14. 天平游码读数例题_天平游码读数
  15. 【教程+实例】Python爬虫实例——用Python爬虫爬取bangumi上的galgame资讯
  16. SSM框架报错分析(一)——There is no getter for property named 'XXX' in 'class java.lang.String'...
  17. 查询用户上次登录时间问题
  18. 酷派D539 APP2SD(扩展内存空间\把应用安装到扩展卡)的方法
  19. 平台云基石-CoreOS之集群篇(无需互联网)
  20. 百度地图最新版本sdk使用系列(六)-搜索周边美食,加油站等,并使用infoWindow展示

热门文章

  1. MyBatis从入门到精通:update用法、delete用法
  2. python - HTMLTestRunner 测试报告模板设置
  3. 父组件传递值给子组件(一)
  4. 【转】[caffe]深度学习之图像分类模型AlexNet解读
  5. STM32之高级定时器互补输出
  6. 面试题:在日常工作中怎么做MySQL优化的?
  7. 来自朋友最近阿里、腾讯、美团等P7岗位面试题
  8. 文言文能编程了,是噱头还是突破?
  9. JEECG 3.6.5版本发布,企业级JAVA快速开发平台
  10. Node.js初探之hello world