博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS --UITextField 输入值改变事件和键盘遮挡处理
阅读量:6155 次
发布时间:2019-06-21

本文共 2796 字,大约阅读时间需要 9 分钟。

hot3.png

一.输入结束时调用

#pragma mark--UITextFieldDelegate--输入完成时调用- (void)textFieldDidEndEditing:(UITextField *)textField{    if(![textField.text isEqualToString:@""]){                 //处理事件    }    }#pragma mark--UITextFieldDelegate---键盘回调- (BOOL)textFieldShouldReturn:(UITextField *)textField{    [textField resignFirstResponder];    return YES;    }

 二.输入时改变

1.添加事件

[_textField addTarget:self                   action:@selector(textFieldDidChangeValue:)         forControlEvents:UIControlEventEditingChanged];- (void)textFieldDidChangeValue:(id)sender{    if(![_textField.text isEqualToString:@""]){                //处理事件    }}

2.添加通知监听

//添加通知   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChangeValue:) name:UITextFieldTextDidChangeNotification object:_textField];- (void)textFieldDidChangeValue:(NSNotification *)notification{    UITextField *textField = (UITextField *)[notification object];    //处理事件}//移除注册的通知-(void)dealloc{        [[NSNotificationCenter defaultCenter] removeObserver:self];   }

三.键盘遮挡问题

#define Main_Screen_Height      [[UIScreen mainScreen] bounds].size.height#define Main_Screen_Width       [[UIScreen mainScreen] bounds].size.width//键盘通知- (void)registerForKeyboardNotifications {        [[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(keyboardWillShown:)                                                 name:UIKeyboardWillChangeFrameNotification object:nil];}//键盘弹出 处理遮挡问题- (void)keyboardWillShown: (NSNotification *)notify {    NSDictionary *dic = notify.userInfo;//    CGFloat duration = [[dic objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];    NSValue *value = [dic objectForKey:UIKeyboardFrameEndUserInfoKey];    CGSize size = [value CGRectValue].size;//获取键盘高度    CGFloat keyBoardHeight = size.height;    CGRect frame = _numField.frame;    int offset = frame.origin.y + 300 - (Main_Screen_Height - keyBoardHeight);        [UIView beginAnimations:@"ResizeForKeyboard" context:nil];    [UIView setAnimationDuration:0.3f];        //将视图y坐标向上移动offset个单位,以使下面有地方显示键盘        if(offset > 0){        self.view.frame = CGRectMake(0.0f, -offset, Main_Screen_Width,Main_Screen_Height);        self.view.backgroundColor = Sec_Search_Color;    }    [UIView commitAnimations];     }#pragma mark--UITextFieldDelegate编辑完成,视图恢复原状-(void)textFieldDidEndEditing:(UITextField *)textField{    self.view.frame =CGRectMake(0, 0, Main_Screen_Width, Main_Screen_Height);}

四、修改textField.placeholder的字体颜色和大小

[_searchBar.textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];    [_searchBar.textField setValue:[UIFont fontWithName:@"PingFangSC-Regular" size:14] forKeyPath:@"_placeholderLabel.font"];

 

转载于:https://my.oschina.net/huangyn/blog/1605718

你可能感兴趣的文章
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
Spring常用注解
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>