`
- 浏览:
3196 次
- 性别:
- 来自:
广州
-
- - (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;
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
实现UITextField的键盘隐藏以及为了防止键盘挡住TextField而上移下移
对UITextField的类的扩展。 很好用的键盘扩展及键盘回收的使用 只要调用一句话方法 键盘随心所以
UIKit中的2向绑定 演示如何使用Combine框架在UIKit中创建双向绑定 为了生成大多数UIControl...UITextField具有textPublisher() -> AnyPublisher <String> UIButton有一个tapPublisher() -> AnyPublisher <Void>
ios7隐藏虚拟键盘,解决键盘挡住UITextField问题
一个UITextField类的category, 可以一行代码实现对UITextField字数的限制。
UItextField和UItextView键盘覆盖问题,可以随键盘上高的改变,自动移动父类UIview
UITextView 实现UITextField功能
iOS UITextField 扩展 密码框
iOS文本框,有时候需要用到类似炒股软件添加百分比或者数字等
该文档详细列出UITextField常用以及不常用的相关属性及如何进行设置,对大家掌握UITextField的用法很有帮助。
UITextField+Extension 是 UITextField扩展 使用runtime实现,完美支持第三方键盘,实现上移效果 通过添加UITextField类目,使用runtime实现,TextField被遮挡时视图上移效果 点击对应的父视图的空白地方回收键盘,...
我们在开发app时界面中经常会有输入框,例如用户登陆界面,一般都是UITextField,当我们点击输入框时会弹出系统键盘,这时如果不调整系统输入框,输入框可能会被键盘覆盖,这种用户体验很不友好,所以这时我们应该让...
在IOS开法中经常会遇到键盘遮挡屏幕的事情(比如输入账号密码验证码等等),就使得原本都不大的屏幕直接占了一半甚至更多的位置,这倒无所谓,...@interface ViewController ()<UITextFieldDelegate> //设置属性 @prop
UITextField或者UITextView放在UIScrollView上弹出键盘修改UIScrollView上移。 还是有点小小的不完美,并不影响整体使用
UITextField 文本字段控件 小Demo
本demo主要是解决一般限制输入字符数量方法存在的一个bug,就是在将要超过限制时输入一串非常长的字符串,选择字符串时会提示超过限制问题;
使用通知,动态获取UITextField中汉字个数
安装只需使用 : pod 'UITextField+Blocks' 用法TextFieldShouldBeginEditing # import < UITextField>UITextField *aTextField;[aTextField setShouldBegindEditingBlock: ^ BOOL (UITextField *textField) { // do...
UITextFieldBlockDemo
UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。本文给大家介绍iOS开发之自定义UITextField的方法,感兴趣的朋友一起学习吧