UITextView被键盘遮挡的处理
这个应该是一个通用的任务了吧,键盘弹出来的时候,UITextView(或者UITextField)会被遮挡。
解决的办法就不是很能通用了。
1. 如果有UIScrollView做父view的话只需要滚动到合适的位置即可。
2. 如果没有UIScrollView的话,可以恰当的临时调整一下UITextView的高度,使得最下面一行的输入也能被看到。
下面只对第二种情况说明一下要点:
我的做法是创建一个UITextView的派生类,这样可以方便重用。
(不派生类也是可以的,原理一样。)
注册2个Notification消息,分别是UIKeyboardDidShowNotification和UIKeyboardWillHideNotification
表示键盘已经弹出来和键盘要消失的时候发送。
- (void) registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification
object:nil];
}
消息的处理
- (void) keyboardWasShow:(NSNotification *) notification {
//取得键盘frame,注意,因为键盘是window的层面弹出来的,所以其frame坐标也是对应window窗口的
CGRect endRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGPoint endOrigin = endRect.origin;
NSLog(@"keyboard frame = %@",NSStringFromCGRect(endRect));
//把键盘的frame坐标转换到与UITextView一致的父view上来
endOrigin = [self.view convertPoint:endOrigin fromView:[UIApplication sharedApplication].keyWindow];
NSLog(@"endOrigin = %@",NSStringFromCGPoint(endOrigin));
//调整inputView的位置
CGFloat inputView_Y = self.view.frame.size.height - endRect.size.height - self.inputView.frame.size.height;
[UIView beginAnimations:nil context:nil];
self.inputView.frame = CGRectMake(self.inputView.frame.origin.x, inputView_Y, self.inputView.frame.size.width, self.inputView.frame.size.height);
[UIView commitAnimations];
}
- (void) keyboardWillBeHidden:(NSNotification *) notification {
[UIView beginAnimations:nil context:nil];
self.inputView.frame = _inputViewOriginalFrame;
[UIView commitAnimations];
}
原文:http://my.oschina.net/dourgulf/blog/80723
UITextView被键盘遮挡的处理的更多相关文章
- 『零行代码』解决键盘遮挡问题(iOS)
关注仓库,及时获得更新:iOS-Source-Code-Analyze https://github.com/draveness/iOS-Source-Code-Analyze Follow: Dra ...
- iOS 处理键盘遮挡TextField、TextView问题
之前处理键盘遮挡问题都是在每一个控制器进行单独处理,这样做真的是非常的费事,今天在做项目的时候就想到自己封装一个,记录一下这个“跌宕起伏”的过程. 思路是这样的:计算文本编辑控件Frame与键盘Fra ...
- iOS- UITextView与键盘回收与键盘遮挡输入框
一.UITextView 可以实现多行输入的文本框,基本属性与UITextField相似,可以输入多行,可以滚动.UITextView还有个代理方式- (BOOL)textView:(UITextVi ...
- UITextView: 响应键盘的 return 事件(收回键盘)
UITextView: 响应键盘的 return 事件(收回键盘) 此篇文章将要介绍UITextView: 响应键盘的 return 事件(收回键盘)的相关介绍,具体实例请看下文 UITextView ...
- iOS开发笔记11:表单键盘遮挡、浮点数价格格式化显示、省市区选择器、View Debugging
1.表单键盘遮挡 应用场景为一个collectionView上有多个textfield.textView供用户填写信息. 之前输入项较少时,采取的方法比较粗暴,didSelectItemAtIndex ...
- Android软键盘遮挡的四种解决方案
问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入 ...
- ZYKeyboardUtil 全自动处理键盘遮挡事件
键盘遮盖输入控件或按钮在日常app开发中避之不及,考虑各种情况下UI各种嵌套,最后还要注册监听再获取指定键盘信息.我们可以通过键盘处理工具类ZYKeyboardUtil避繁就简,利用Block的方式处 ...
- 【转】UITextView 修改键盘 的return按钮
原文:http://www.apkbus.com/blog-107838-45740.html 1 #import <UIKit/UIKit.h>2 3 @interface TextVi ...
- iOS键盘遮挡输入框,输入区域自动上移
在iOS开发过程当中,遇到关于键盘遮挡输入框的问题,经过网络参考与实践,总结如下: 登录窗口,上下放置两个UITextField,一个用户名,一个密码,放置的在屏幕下方1/3处,当点击用户名时,自动弹 ...
随机推荐
- mogilefsd同步速度调优
#查看主从mogadm settings list #一点点调试mogadm settings listmogadm settings set internal_queue_limit 500moga ...
- AC日记——Roma and Poker codeforces 803e
803E - Roma and Poker 思路: 赢或输或者平的序列: 赢和平的差的绝对值不得超过k: 结束时差的绝对值必须为k: 当“?”时可以自己决定为什么状态: 输出最终序列或者NO: dp( ...
- ubuntu for windows10设置中文
运行 sudo dpkg-reconfigure locales ,第一个界面是选择区域,找到后面的zh_CN.UTF-8 UTF-8,回车确认,第二个界面是选择语言,选择zh_CN.UTF-8,回车 ...
- J.U.C并发框架源码阅读(二)AbstractQueuedSynchronizer
基于版本jdk1.7.0_80 java.util.concurrent.locks.AbstractQueuedSynchronizer 代码如下 /* * ORACLE PROPRIETARY/C ...
- Handler嵌套--可以
package com.example.handlernestdemo; import android.support.v7.app.ActionBarActivity; import android ...
- 移动 web 1px 边框解决方案
在移动端web页面开发中,为了使css中使用的尺寸与设计稿一致,通常会采用 rem 单位配合 lib-flexible 来实现移动端的适配,在IOS设备上 flexible.js 会根据设备的分辨率动 ...
- 程序编译时书写Makefile注意事项一例
在进行程序编译时,可能需要指定一些库的库的路径.头文件的路径,分别使用的参数选项是-L和-I,需要注意的是: 需要确保-L和-I后边的内容不为空,否则会出现意想不到的错误,而这种错误比较难以发现,引起 ...
- [置顶]
kubernetes将外部服务映射为内部服务
在实际应用中,一般不会把mysql这种重IO.有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署.而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库 ...
- Quartz配置CronTrigger
CronTrigger 构造器 String name, //触发器名称 String group, //触发器的组名 String jobName, //job名称 String jobGroup, ...
- Linux下安装Eclipse的PHP插件(PHPEclipse)
下载: Eclipse: http://www.eclipse.org/downloads/ (本人用的Ubuntu,直接在SoftWare Center中下载的) (选择适合你系统的相应 ...