http://blog.csdn.ofcdn.net/ch_soft/article/details/6948119
- - (void)registerForKeyboardNotifications
- {
- //添加自己做为观察者,以获取键盘显示时的通知
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(keyboardWasShown:)
- name:UIKeyboardDidShowNotification object:nil];
- //添加自己做为观察者,以获取键盘隐藏时的通知
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(keyboardWasHidden:)
- name:UIKeyboardDidHideNotification object:nil];
- }
-
- // 键盘出现时调用此方法
- - (void)keyboardWasShown:(NSNotification*)aNotification
- {
- //如果键盘是显示状态,不用做重复的操作
- if (keyboardShown)
- return;
-
- //获得键盘通知的用户信息字典
- NSDictionary* info = [aNotification userInfo];
-
- // 取得键盘尺寸.
- NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
- CGSize keyboardSize = [aValue CGRectValue].size;
-
- // 重新设置scrollView的size
- CGRect viewFrame = [myScrollView frame];
- viewFrame.size.height -= keyboardSize.height;
- myScrollView.frame = viewFrame;
-
-
- // 把当前被挡住的text field滚动到view中适当的可见位置.
- CGRect textFieldRect = [activeField frame];
- [myScrollView scrollRectToVisible:textFieldRect animated:YES];
-
-
- //记录当前textField的偏移量,方便隐藏键盘时,恢复textField到原来位置
- oldContentOffsetValue = [myScrollView contentOffset].y;
-
- //计算textField滚动到的适当位置
- CGFloat value = (activeField.frame.origin.y+myScrollView.frame.origin.y+activeField.frame.size.height - self.view.frame.size.height + keyboardSize.height)+2.0f;
-
- //value>0则表示需要滚动,小于0表示当前textField没有被挡住,不需要滚动
- if (value > 0) {
- //使textField滚动到适当位置
- [myScrollView setContentOffset:CGPointMake(0, value) animated:YES];
- isNeedSetOffset = YES;//更改状态标志为需要滚动
- }
-
- //更改键盘状态标志为已显示
- keyboardShown = YES;
- }
-
-
- // 键盘隐藏时调用此方法
- - (void)keyboardWasHidden:(NSNotification*)aNotification
- {
-
-
- NSDictionary* info = [aNotification userInfo];
-
- // Get the size of the keyboard.
- NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
- CGSize keyboardSize = [aValue CGRectValue].size;
-
- // Reset the height of the scroll view to its original value
- CGRect viewFrame = [myScrollView frame];
- viewFrame.size.height += keyboardSize.height;
- myScrollView.frame = viewFrame;
-
- //如果状态标志为需要滚动,则要执行textFiled复位操作
- if (isNeedSetOffset) {
- //oldContentOffsetValue记录了textField原来的位置,复位即可
- [myScrollView setContentOffset:CGPointMake(0, oldContentOffsetValue) animated:YES];
- }
-
- //复位状态标志
- isNeedSetOffset = NO;
- keyboardShown = NO;
- }
分享到:
相关推荐
但对于系统键盘,联想状态下的输入也会监听,这里如果不处理就容易发生崩溃,例如当快要达到字数限制时,继续输入,此时textField.text =联想输入文字+textField已有文字,当textField.text超过字数限制时,就会截取...
在 AutoLayout 布局下处理键盘挡住视图问题很简短的一篇文章,记录一个在实习期间 Get 的机智方案,制作一个登录界面的时候遇到这样一个问题,当把 UITextField 放在下面的时候,弹出的键盘会挡住该 UITextField ...
在一些网站登陆界面,我们经常会见到,键盘的出现与隐藏操作,那么基于代码是如何实现的呢?下面小编写了具体代码介绍,特此分享到软件开发网平台,供大家参考 先给大家展示下效果图: 具体代码如下所示: #...
我开发了UIAutoScrollView类,它能自动处理键盘遮挡问题,达到了一劳永逸的效果! 使用注意 1.如果是xib的方式使用这个类,不需要调用这个addAutoScrollAbility方法,我在awakeFromNib方法里调用了。 在xib中使用...
来源:github/UIAutoScrollViewLicence:MIT作者:lq 在开发过程中,如一个页面有许多的输入控件,UITextField和UITextView。... 我开发了UIAutoScrollView类,它能自动处理键盘遮挡问题,达到了一劳永逸的效果!
当表单有更多的 UITextField 或 UITextView 对象时,我们面临一个常见问题 - 键盘重叠字段! 此代码为该问题提供了非常简单的解决方案。 ABTextboxToolbarHandler是简单易用的解决方案,您可以在其中处理输入文本...
它负责处理所有必需的框架和第三方依赖项: pod 'DCustomKeyboard' , '~> 0.0'使用示例要将键盘添加到UITextView或UITextField使用下一个代码DCustomGridKeyboard *keyboard = [[DCustomGridKeyboard alloc ] ...
使在Android上使用Thaana更加容易字型开放字体 规格 Java脚本将键输入转换为适当的Unicode Thaana字符的Brkeyboard处理程序Thaana音译为拉丁文构架AngularJS 将键盘输入替换为Thaana Unicode -Thaana键盘处理程序...
//resignFirstResponder 这个方法的功能就是让属于textfield的键盘下去 [_textField resignFirstResponder]; resign失去 responder响应 //成为第一响应者 [_textField becomeFirstResponder]; become 变成 //...
8.6 秘诀:关闭uitextfield键盘 204 8.7 秘诀:关闭uitextview键盘 205 8.8 秘诀:向文本视图添加一个撤销(undo)按钮 207 8.9 秘诀:创建一个基于文本视图的html编辑器 209 8.10 秘诀:构建一个交互搜索栏 211...
滚动键盘控制器 在 iOS 上处理键盘显示/隐藏的框架。 轻松允许您滚动到 UITextFields 和 UITextViews,以便它们不会被键盘覆盖。指示将您的 UITextFields 和 UITextViews 放在滚动视图中。 将 SKCKeyboardController...
8.6 秘诀:关闭UITextField 键盘.....204 8.7 秘诀:关闭UITextView 键盘.....205 8.8 秘诀:向文本视图添加一个撤销 (Undo)按钮.....207 8.9 秘诀:创建一个基于文本视图的HTML 编辑器.....209 8.10 秘诀:构建一...
8.6 秘诀:关闭UITextField 键盘.....204 8.7 秘诀:关闭UITextView 键盘.....205 8.8 秘诀:向文本视图添加一个撤销 (Undo)按钮.....207 8.9 秘诀:创建一个基于文本视图的HTML 编辑器.....209 8.10 秘诀:构建一...
8.6 秘诀:关闭UITextField 键盘.....204 8.7 秘诀:关闭UITextView 键盘.....205 8.8 秘诀:向文本视图添加一个撤销 (Undo)按钮.....207 8.9 秘诀:创建一个基于文本视图的HTML 编辑器.....209 8.10 秘诀:构建一...