TextView和TextField常见用法
2018-08-14 本文已影响0人
jimmywife
一、UITextView
textView可以实现多行输入的文本框,基本属性与UITextField相似,可以输入多行,可以滚动。
1.基本设置
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 280, 80)];//初始化
textView.backgroundColor=[UIColor colorWithRed:0.21 green:0.71 blue:0.51 alpha:0.5]; //背景色
textView.scrollEnabled = YES; //当文字超过视图的边框时是否允许滑动,默认为“YES”
textView.editable = YES; //是否允许编辑内容,默认为“YES”
textView.font=[UIFont fontWithName:@"Arial" size:18.0]; //设置字体名字和字体大小;
textView.returnKeyType = UIReturnKeyDefault;//return键的类型
textView.keyboardType = UIKeyboardTypeDefault;//键盘类型
textView.textAlignment = NSTextAlignmentLeft; //文本显示的位置默认为居左
textView.dataDetectorTypes = UIDataDetectorTypeAll; //显示数据类型的连接模式(如电话号码、网址、地址等)
textView.textColor = [UIColor blackColor];
textView.delegate = self; //设置代理方法的实现类
textView.text = @"UITextView";//设置显示的文本内容
[textView.layer setCornerRadius:10]; //设置圆角
textView.tag = 1001; //设置tag值
2.代理方法
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
可以控制输入文字的数量的代理方法,较为常用
//是否可以开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
//是否可以结束编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;
//已经开始编辑
- (void)textViewDidBeginEditing:(UITextView *)textView;
//已经结束编辑
- (void)textViewDidEndEditing:(UITextView *)textView;
//内容变化
- (void)textViewDidChange:(UITextView *)textView;
//光标变化
- (void)textViewDidChangeSelection:(UITextView *)textView;
//当前输入的位置,当前输入的文字,是否可以继续输入
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
//下面这俩不好理解,大概是验证url和文件名后缀的
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);
- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);
3.键盘弹出与回收
a.键盘回收
1.可以使用
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{ //[self.view endEditing];
UITextView *textView = (UITextView*)[self.view viewWithTag:1001];
[textView resignFirstResponder]; //取消成为第一响应者
}
2.如果是在TableView中写,可以使用TableView滑动时收回键盘的方法
self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
其中keyboardDismissMode,是UIScrollView的属性,
它的值除了UIScrollViewKeyboardDismissModeNone,
还有一种是UIScrollViewKeyboardDismissModeInteractive,表示键盘可以随着手指下滑而移出屏幕
3.可以使用注册通知来移动键盘的位置,出现或者隐藏两个方法
详情可以查看:https://www.cnblogs.com/shenlaiyaoshi/p/5977668.html
二、UITextField
1.基本设置
UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
text.borderStyle = UITextBorderStyleRoundedRect;//设置边框样式,只有设置了才会显示边框样式
text.background = [UIImage imageNamed:@"dd.png"]; //设置背景
text.disabledBackground = [UIImage imageNamed:@"cc.png"]; //设置背景
text.placeholder = @"password";//设置水印
text.clearButtonMode = UITextFieldViewModeAlways;//设置输入状态
text.secureTextEntry = YES;//设置密文输入
text.autocorrectionType = UITextAutocorrectionTypeNo;//是否纠错
text.clearsOnBeginEditing = YES; //再次编辑就清空
text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;//内容垂直对齐
textFied.adjustsFontSizeToFitWidth = YES;//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
text.autocapitalizationType = UITextAutocapitalizationTypeNone; //首字母是否大写
text.returnKeyType =UIReturnKeyDone;//return 键变成什么样子
textView.keyboardAppearance=UIKeyboardAppearanceDefault;//键盘外观
text.rightView=image;
text.rightViewMode = UITextFieldViewModeAlways;//最右侧加图片,左侧类似
2.代理方法
详细的可以参考:https://blog.csdn.net/souprock/article/details/70598729
3.键盘的回收
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[text resignFirstResponder]; //主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收
return YES;
}
4.键盘类型
typedef enum {
UIKeyboardTypeDefault, 默认键盘,支持所有字符
UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
UIKeyboardTypeURL, URL键盘,支持.com按钮 只支持URL字符
UIKeyboardTypeNumberPad, 数字键盘
UIKeyboardTypePhonePad, 电话键盘
UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名
UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘
UIKeyboardTypeDecimalPad, 数字键盘 有数字和小数点
UIKeyboardTypeTwitter, 优化的键盘,方便输入@、#字符
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;