iOS 之UITextFiled/UITextView小结
一:编辑被键盘遮挡的问题
参考自:http://blog.csdn.net/windkisshao/article/details/21398521
1.自定方法 ,用于移动视图
-(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval;
2.注册监听
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[defaultCenter addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
3.实现方法
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *userInfo = [notification userInfo];
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
if(nil==self.myTextView) return;// self.editTextView 为被键盘遮挡住的控件
CGRect rect = self.myTextView.frame;
float textY = rect.origin.y + rect.size.height;
float bottomY = SCREENHEIGHT - textY;//得到下边框到底部的距离 SCREENHEIGHT 为当前设备的高度
if(bottomY >=keyboardRect.size.height ){//键盘默认高度,如果大于此高度,则直接返回
return;
}
float moveY = keyboardRect.size.height - bottomY;
[self moveInputBarWithKeyboardHeight:moveY withDuration:animationDuration];
}
- (void)keyboardWillHide:(NSNotification *)notification {
NSDictionary* userInfo = [notification userInfo];
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationDuration;
[animationDurationValue getValue:&animationDuration];
[self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration];
}
-(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval{
CGRect rect1 = self.view.frame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:_NSTimeInterval];
rect1.origin.y = -_CGRectHeight;//view往上移动
self.view.frame = rect1;
[UIView commitAnimations];
}
二: 键盘
(1)键盘类型
UIKeyboardTypeDefault, // 默认键盘:支持所有字符
- UIKeyboardTypeASCIICapable, // 支持ASCII的默认键盘
- UIKeyboardTypeNumbersAndPunctuation, // 标准电话键盘,支持+*#等符号
- UIKeyboardTypeURL, // URL键盘,有.com按钮;只支持URL字符
- UIKeyboardTypeNumberPad, //纯数字键盘 (不带小数点)
- UIKeyboardTypeDecimalPad //数字键盘 (带小数点)
- UIKeyboardTypePhonePad, // 电话键盘
- UIKeyboardTypeNamePhonePad, // 电话键盘,也支持输入人名字
- UIKeyboardTypeEmailAddress, // 用于输入电子邮件地址的键盘
- UIKeyboardTypeWebSearch //用于搜索
- UIKeyboardTypeAlphabet
如: self.uIphone.keyboardType = UIKeyboardTypeNumberPad;
祥见:http://blog.csdn.net/crazyzhang1990/article/details/39965931
(2) return键的类型
UIReturnKeyDefault, 默认 灰色按钮,标有Return
UIReturnKeyGo, 标有Go的蓝色按钮 (完成,可用于填写资料的最后一项)
UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索
UIReturnKeyJoin,标有Join的蓝色按钮
UIReturnKeyNext,标有Next的蓝色按钮 (可用于登录/注册/填写地址-->下一步)
UIReturnKeyRoute,标有Route的蓝色按钮
UIReturnKeySearch,标有Search的蓝色按钮 (可用于搜索)
UIReturnKeySend,标有Send的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyEmergencyCall, 紧急呼叫按钮
如:
self.uIphone.keyboardType = UIKeyboardTypeNumberPad;
(3) 点击return建响应事件
A.UITextField --> - (BOOL)textFieldShouldReturn:(UITextField *)textField{
如: 添加地址
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
if(textField.tag==10) //下一步 (姓名)
{
[self.uName resignFirstResponder];
[self.uIphone becomeFirstResponder];
}else if(textField.tag==11) //下一步 (电话)
{
[self.uIphone resignFirstResponder];
[self.reciveAddress becomeFirstResponder];
}else if(textField.tag==100) //完成(地址填完之后可直接调用接口)
{
[self.reciveAddress resignFirstResponder];
[self addBtn:nil];
}
return YES;
}
B.UITextView --> - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
如:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if ([text isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return
//在这里做你响应return键的代码
[self addBtn:nil];
return NO; //这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行
}
return YES;
}
参考自:http://blog.sina.com.cn/s/blog_59fb90df010176re.html
三:UITextField小结
1.自定义UITextField 左边加图标(如:登录)
UIImageView *i=[[UIImageView alloc]initWithFrame:CGRectMake(15, 10, 21, 21)];
[i setImage:[UIImage imageNamed:@"yh"]];
UIView *userLeftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 38)];
[userLeftView addSubview:i];
self.userName.leftView=userLeftView;
self.userName.leftViewMode=UITextFieldViewModeAlways;
2.设置自定义UITextField 的Placeholder颜色
UIColor *color = [UIColor blue];
self.userName.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@" 手机号" attributes:@{NSForegroundColorAttributeName: color}];
四:UITextView小结
1.设置Placeholder
@property (nonatomic,strong) UILabel *proText1;
self.automaticallyAdjustsScrollViewInsets = NO;
[self.leaveMessage setDelegate:self];
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(self.leaveMessage.frame.origin.x+10, self.leaveMessage.frame.origin.y-35, self.leaveMessage.bounds.size.width, 100)];
lbl.text=@" 感谢您留下宝贵的意见....";
[lbl setFont:[UIFont systemFontOfSize:15.0]];
lbl.enabled=NO;
self.proText1=lbl;
[self.view addSubview:lbl];
#pragma mark -----textView的代理事件
-(void)textViewDidChange:(UITextView *)textView
{
// textView.text = [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (textView.text.length == 0) {
self.proText1.text = @" 感谢您留下宝贵的意见....";
}else{
self.proText1.text = @"";
}
}
2.去掉空格以及换行
NSString *content = [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
有的时候由于不正确的操作,直接将textView.text作为参数传 到服务器,可能会产生意想不到的错误,因此就需要加这个对字符串进行一下处理
更多请参考:http://www.41443.com/HTML/iphone/20141109/204260.html
iOS 之UITextFiled/UITextView小结的更多相关文章
- ios 浅谈一下UITextFiled UITextView 在tableview的cell上边展示
最近在项目中.要做到在tableview的cell上边加一个输入框.允许用户输入. 1.我首先选的是在uitextView 然后在通知键盘出现的时候,将tableview的内容设置在键盘的上边.但是 ...
- ios学习开发阶段小结
总结一下,开发了1个月10天的ios经验. 先晒成绩单:两个实验性质的app,一个wifi管家,一个图片壁纸软件 技术小结: 1.熟悉基本的各种ns语法:#import,#include,@class ...
- iOS开发-UITextView文字排版
UITextView文本排版 1.配置NSMutableParagraphStyle NSMutableParagraphStyle *MParaStyle = [[NSMutableParagrap ...
- IOS开发,知识点小结,ios开发中经常使用的宏定义总结
IOS开发,从应用跳转到用浏览器打开网页: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// ...
- Unity3D在IOS上的优化小结
http://www.58player.com/blog-635-122.html 最近一段時間一直在做Unity 在IOS設備上的資源優化,結合Unity的官方文檔以及自己遇到的實際問題,我把自己認 ...
- iOS——数据安全性问题小结
在移动互联网快速发展的今天,iOS应用直接运行在用户的手机上,与运行在服务器后台服务相比,更有可能被黑客攻击. a.网络安全: 1.1 安全地传输用户密码 事先生成一对用于加密的公私钥,客户端登录的时 ...
- IOS开发之—— UITextView禁止Emoji输入
UITextView代理方法:判断 -(void)textViewDidEndEditing:(UITextView *)textView{ if ([self stringContai ...
- iOS开发之UITextView,设置textView的行间距及placeholder
一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: // textview 改变字体的行间距 NSMutableParagraph ...
- iOS开发——设备信息小结(未完待续...)
1.获取设备的信息 UIDevice *device = [[UIDevice alloc] init]; NSString *name = device.name; //获取设备所有者 ...
随机推荐
- 从源码看Azkaban作业流下发过程
上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- nginx的使用
1.nginx的下载 解压后文件目录: 2.nginx的常用命令 nginx -s stop 强制关闭 nginx -s quit 安全关闭 nginx -s reload 改变配置文件的时候,重 ...
- angularjs 依赖注入--自己学着实现
在用angular依赖注入时,感觉很好用,他的出现是 为了"削减计算机程序的耦合问题" ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个 ...
- jquery学习(一)
简单的jquery学习,首先在页面引入jquery <!-- 引入jquery --> <script src="js/jquery-1.8.3.js" type ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
- linux yum命令详解
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...
- POJ1743 Musical Theme [后缀数组]
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 27539 Accepted: 9290 De ...
- PHP5.4~7.1新特性总结
http://note.youdao.com/noteshare?id=7273b858fc12873ad092979e4ba173a7&sub=WEB334fdcf50b507ad93549 ...